2012年12月13日木曜日

Zend Frameworkでつくるソーシャルゲーム 第4回 Zend_Application_Resource_Db

毎度どうも佐藤です。

Zend Frameworkでつくるソーシャルゲーム第4回まできました。

ブログで書いたシリーズ物では最長ではないでしょうか(爆)

今回はZend FrameworkからDBを利用できるようにします。
ここみたら終わりますが→利用できるリソース-Zend Manual
それはそれという事にして始めましょうか。

まずは設定ファイルをiniからymlに変更します。

(個人的にiniよりymlが好きなので)

NetBeansから編集していきますよ!

iniをいじる前にindex.phpを変更します。(別にどっちからでもいいんですが)

23行目あたりのZend_Applicationをインスタンス化しているところにiniファイルを指定しているところがあるのでそこをymlに変えます。
//public/index.php
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.yml'
);


index.phpはこれで終わりです。CTRL+Sで保存しておきましょう。

次は「application/configs/application.ini」を編集します。

まずはapplication.iniを右クリックして拡張子をymlに変更します。

それから当然中身も書き換えなければならないのでyml風に書き換えます。
CTRL+Hとかうまく使ってささっと書き換えてください。
これを
;application/configs/application.ini
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1



こんな感じにします。
#application/configs/application.yml
production:
  phpSettings:
    display_startup_errors: false
    display_errors: false
  includePaths:
    library: APPLICATION_PATH/../library
  bootstrap:
    path: APPLICATION_PATH/Bootstrap.php
    class: "Bootstrap"
  appnamespace: "Application"
  resources:
    frontController:
      controllerDirectory: APPLICATION_PATH/controllers
      params:
        displayExceptions: false

staging:
  _extends: production

testing:
  _extends: production
  phpSettings:
    display_startup_errors: true
    display_errors: true

development:
  _extends: production
  phpSettings:
    display_startup_errors: true
    display_errors: true
  resources:
    frontController:
      params:
        displayExceptions: true



参考
Zend_Config_Yaml

書き換えが正常にできたか確認

これでまずは実行してみてください

余分なスペースとかインデントにタブ使ったりするとエラーがでたりします。
:の前にスペースはいってたらダメで5分ハマリました。
前回と同じくWelcome to the Zend Framework!が見えてればミスはないと思われます。
もしエラーがでてたらZendServerのMonitor→LogsとかからPHPエラーログあたりを見て原因をさぐり修正してください。
多分今のところスペルミスとか、無駄なスペースが・・・とかインデントが・・・とかよくあるケアレスミスだと思います。

DBの設定をymlに記入

表示できたらresourceのところにdbの設定を追記します。
※今動作しているlocalのサーバはこのブログの通りならdevelopmentですが、developmentはproductionの設定を継承しているのでどちらの箇所でも大丈夫です。

resources:
    db:
      adapter: Pdo_Mysql
      params:
        dbname: dragonfantasy
        username: dragon
        password: fantasy
        host: localhost


とかいう具合に。
追記したらまた実行して書き方にミスが無いか確認します。

コントローラからDBを呼び出す

正常なら「application/controllers/IndexController.php」を編集します。
indexAction()でDBからデータを取り出してみます。
public function indexAction()
    {
        $db = $this->getInvokeArg('bootstrap')->getPluginResource('db')->getDbAdapter();
        $db->query('set names utf8');
        $res = $db->fetchRow('select id,name from dfaccount where id=1');
        Zend_Debug::dump($res);
    }


どうでしょうか?DBから正常にデータを取り出せましたか!?
できなかった方は画面やlogファイルに書かれたエラーメッセージを元にがんばってみてください!
最後眠くなって来てたので何か書き間違えたかもしれないけれど・・・(ぇ
何か突っ込みどころがあれば気軽にコメントください。

Zend Frameworkでつくるソーシャルゲーム-第3回 DBの設定

二日目に続きました。おめでとう俺。

Zend Frameworkでつくるソーシャルゲーム

第3回はDBの設定です。


MySQLのユーザの作成とテスト用テーブルの作成までやります。

まずはユーザの作成です。

MySQL Workbenchを起動します。
ZendServerと一緒にMySQLがインストールしてあれば、既にworkbenchの方でコネクションが設定されていると思います。
rootでパスワードなしで接続可能な状態になっているはずです。
ローカルでしか動かしてないうちはあまり問題無いとは思いますが、念のためrootにパスワードを設定し、さらに開発で使うユーザを作成します。
ServerAdministrationからLocal_MySQL_Zendserver51とかそんなのをダブルクリックして接続します。
Users and PrivilegesからAdd Accountでユーザを追加します。
設定例

まずLoginタブ

Login Name:dragon
Limit Connectivity to Hosts Matching:localhost
password:fantasy

次にAdministrative Rolesタブ

DBManagerにチェックいれる
Applyボタンを押して完了

開発用DBの作成

ユーザーの追加が完了したらそのServerAdministrationのタブを閉じて、New Connectionから先ほど作ったユーザーで接続しましょう。
接続したら左上の左から3番目のアイコンをクリックして(Create a new schema in the connected server)開発用のDBを作りましょう。
name:dragonfantasy
collation:utf8-utf8_general_ci
Apply
Apply
Finish!

テーブルの作成

ついでにテスト用にテーブルを作っておきます。
できあがったDBのアイコンをダブルクリックしてTablesのところを右クリック→Create table
table name:dfaccount
collation:utf8-utf8_general_ci
engine:InnoDB
Columns
id int PK NN AI
name varchar(45) NN
という感じで適当に。

テスト用データの挿入

テーブルが作成できたらテーブルを右クリックしてedit table dataからテスト用データをいれておきます。
nameだけいれてapplyすればOKです。
idはAIにチェックを入れ忘れてなければ自動ではいります。

とりあえずMySQL側の準備はこれで完了です。
意外と長くなったので続きは第4回にします。

2012年12月11日火曜日

Zend Frameworkでつくるソーシャルゲーム-第2回 プロジェクトの作成


第2回 Zend Frameworkのプロジェクトの作成


連載第2回ですが、書いているのは同じ日です。
今回はプロジェクトを作成してブラウザでインデックスページを見るところまでです。


まずはZendFrameworkを入手しましょう。


あ、ちなみに私の開発環境はWindowsXPでございます。
その他環境の方は適宜脳内変換をお願いします。
何かお気づきの点などありましたら気軽にコメントください。

はい、ではこちらからZend Server CE (PHP 5.3)をダウンロードしてインストールします。

インストールする時にApacheとMySQLも一緒にいれましょう。
Apacheはデフォルトで入るっぽいですが、MySQLはデフォルトでは入らないっぽいのでチェックボックスにチェックいれてください。

インストールが完了したらNetBeansを起動します。

起動したら新規プロジェクトを作成します。

ファイル→新規プロジェクト→PHPアプリケーション(新規作成)で次へ
プロジェクト名は半角英字で適当に。
ソースフォルダはcドライブ直下とかで日本語パスは避けておきましょう。

  • プロジェクト名:DoragonFantasy
  • ソースフォルダ:c:\dev\DragonFantasy
  • PHPのバージョン:5.3
  • デフォルトエンコーディング:UTF-8
  • NetBeansのメタデータを別のディレクトリに配置にチェックいれて「c:\dev\DragonFantasyBeans」

とかいう具合で次へ

  • ローカルWEBサイト
  • http://dragonfantasy.local/
次へ

最後にZend PHP Web Frameworkにチェックいれて完了です。

すると、あら不思議!プロジェクトファイルができあがっているではありませんか!!
いやー便利ですね。このブログ書いたおかげで今知りました。
NetBeansさんはプロジェクトの作成までやってくれるんですね。
いたれりつくせりだわー知らなかったー。

それではこれを実行してみましょう。
と言いたいところですが、まだ設定が2つほど終わっていません。

一つ目はApacheの設定です。

WIN+Eでエクスプローラを起動します。
ZendServerのインストールフォルダの中のetc\sites.dフォルダを開いてエディタで「vhost_doragonfantasy.local.conf」というファイルを作成します。
(vhost_という文字で始まるところがミソです)
(デフォルトでのパスはC:\Program Files\Zend\ZendServer\etc\sites.dになるはず)
NetBeansに一旦戻りdocsのREADME.txtを開き
<VirtualHost *:80>から</VirtualHost>までをコピーして先ほどのファイルに貼り付けます。
ServerName .localServerName dragonfantasy.localになおして保存します。
保存したらタスクトレイの再生ボタンがついたようなApacheのアイコンをクリックしてRestartしてください。

そして二つ目、hostsファイルを書き換えます。

エクスプローラでC:\WINDOWS\system32\drivers\etcを開き、hostsファイルを開きます。
127.0.0.1       localhost
と書いてある部分がありますね?
そこに「 dragonfantasy.local」を書き足して
127.0.0.1 localhost dragonfantasy.local
と変更して保存します。
これで設定が完了したのでNetBeansに戻り実行してみましょう。
F6を押すか、実行→プロジェクトを実行で実行します。
ブラウザが起動してZend Server Test Pageという文字が見えたあなた!おそらくApacheの再起動を忘れています!!
Welcome to the Zend Framework!という文字が見えたあなた!
おめでとうございます!正常にプロジェクトを作成し、設定を終えることができたようです!

それでは今回はここまで!
次回はDBへの接続です! 

Zend Frameworkで作るソーシャルゲーム-第1回 準備編

Zend Frameworkで作るソーシャルゲーム

と題して連載予定のこの記事は一体どこまで続くでしょう。
今までシリーズ物は完成したことがありません。
とりあえず今日は第1回 準備編です。
まずは私が使っているツールを紹介します。

すべてのツールに共通することですが、背景色が変更できるものは灰色にする。
白だと目が痛くなるから。

NetBeans

まぁ何かしらIDEは使った方が効率がいいと思うんですよ。
何しろスペルミスが減りまくるし、スペルミスが減るからね。
アレ結構気づかないでハマるじゃん?(汗
まぁあと色々便利なんでとりあえず使う。
別にNetBeansにこだわっているわけではないです。
eclipse?とかまともに使ったこと無いです。

EmEditor

まともなエディタならなんでもいいと思うけど、自分が使いやすいやつでね。ちなみに使用しているのは無料版ではないです。無料版でも十分使えると思いますが。teraPadとか秀丸とかでもいいんじゃないですか。

MySQL WorkBench

SQLがわかるなら便利だと思う。

TortoiseSVN

基本的にはNetBeansだけでも概ね問題ないと思います。

Poderosa

タブがいいんだ。きっと。

FTPとかブラウザ

FTPは基本的にNetBeansで済ませる。必要ならFileZilla
ブラウザは基本Firefox時々Chromeだけど、何向けの何を開発するかによるよね。
あとコピペツールとしてtomoclip使うかもしれない。
むしろ開発じゃない部分でよく使うかもしれない。

2012年7月24日火曜日

Firefoxアドオン開発-設定値の保存

ドラゴンクルセイド2F用アドオン開発日記でございます。
事前審査も通りましたんで絶賛?テスト公開中です。

チャットの自動読み込みと税金の自動徴収を設定値を保存できるようにいたしました。
その際に「アドオンの設定を保存する方法」を学んだのでメモしておきます。

Preferences-MDN ←に書いてある事ほぼそのままなんですけど、ブランチ取得してsetなんちゃら、getなんちゃらメソッドでやるだけです。

// "extensions.myext" ブランチを取得
var prefs = Components.classes["@mozilla.org/preferences-service;1"].
getService(Components.interfaces.nsIPrefService);
prefs = prefs.getBranch("extensions.myext.");


nsIPrefBranch には設定の取得・設定のための 6 つのメソッドがあります。getBoolPref(), setBoolPref(), getCharPref(), setCharPref(), getIntPref() そして setIntPref() です。

// nsIPrefBranch 経由の設定操作
// branch を取得する方法は一つ上の章を読んでください
var value = prefs.getBoolPref("accessibility.typeaheadfind"); // 取得
prefs.setBoolPref("accessibility.typeaheadfind", !value); // 設定


prefs.getBranch()の時に最後のドットを忘れて10分くらいハマりました。はい。

規定値の設定は「/defaults/preferences/*.js」だそうで、
そこに
pref("extensions.extensionname.preferencename", false);
って感じで書いてやれば勝手に読み込んでくれます。

やってみると非常に簡単なんですけど、MDNのページ読んでると難しそうに見えました。
扁桃炎でちょっとボケてるのかも・・・。

2012年7月7日土曜日

Firefoxアドオン開発-テキストが選択できない件

毎度どうもゲームするよりゲーム用のアドオン作ってる方が楽しいんじゃないかと思う今日この頃の佐藤です。

Firefox用アドオン-DC2Fサポートを作ってて苦労した事のメモなんです。

まずチャットの表示をどのようにするべきなのかわかりませんでした。

今のところboxの中にdescriptionタグで落ち着きました。labelでもできると思います。
ちなみに最初はiframe使ってその中でpタグでやってました。
なんでそうしたかは忘れました。
descriptionとかlabelとか知らなかったからだったかな・・・。
https://developer.mozilla.org/ja/XUL/description

次に、世界チャットだけ表示できない問題に悩まされました。
これは世界チャットだけ内容にタグが入っているからでした。
タグを抜き取ることでひとまずよしとしました。
後ほど色付けする予定。

そして、表示したテキストが選択できない問題の登場です。
こいつには相当悩まされましたが、FirebugでCSSを眺めている時に 「-moz-user-select」といういかにもなプロパティを発見し、グーグル先生に聞いたらやっぱりこいつのせいだって言ってました。
https://developer.mozilla.org/En/CSS/-moz-user-select

こんな感じでCSSを設定して解決しました。

.chatLine{
margin:0 0 0 0;
padding:0 5px;
line-height:15px;
display:block;
-moz-user-select:text;
-moz-box-sizing:border-box;
cursor:text;
}

Firefoxアドオン開発-JQueryの.append()で書き込めなかったんすよ。

DC2Fアドオン作成中、チャットの表示をしようとする時に
TypeError: p is null

ってエラーに悩まされた。

初歩的な話っぽいけど、XULで「<」とか「&」とか.append()で書き込もうとするとでるっぽい。
タグいれたきゃはこんな風にしろってさあああああ。
var href = "http://www.google.com/";
var text = "Google";
$("body").append(
$("<div>", { class: "foo" })
.append($("<a>", { href: href, text: text })
.click(function (event) { alert(event.target.href) }))
.append($("<span>").text("Foo")));

&はどうすればいいのかまだわからない・・・。
XUL_School/DOM_Building_and_HTML_Insertion#jQuery_Templating

っていうか子供泣き過ぎでブログ書けねぇ!腕を引っ張るな!wwwwww

Firefoxアドオン開発-cookieの取得(XPCOMの利用)

DC2FはクッキーにセッションIDが保存されておるので、それを取得したかったんです。
でもFirefoxに保存されたクッキーをどうやったら覗けるのかがわからんかった。

XPCOMだろうなぁ。と思って検索したらわかりました。

XPCOMの利用例(クッキー)
ここにある例を参考に無事取得することができたので、アドオンの下準備部分を書き換えましたよ。
わかれば意外と簡単ですね。
MDNのページってところどころ日本語訳のページなかったりで見づらいっす。


2012年7月3日火曜日

Firefoxアドオン開発-Webコンソール

WEBコンソール今使ってみてすげー便利ってわかったよ・・・。

Web Console

そしてFirebugの良さを再認識だよ・・・。

Webコンソールみて

-- [23:41:45.408] Web コンソールのログ記録 API (console.log, console.info, console.warn, console.error) は、このページ上のスクリプトにより無効化されています。

とかでててconsole.log()が使えねえ!って調べてたら、Firebugのコンソールにでてるだけじゃねえか!恥ずかしいw
alert()で頑張ってたとかほんと恥ずかしい。

つーかもう今使いたかった程度の事ならconsole.logすらいらねーじゃん。
オブジェクトの中身とかコマンドライン インタプリタで十分じゃんじゃんじゃじゃーん。
何故今まで俺はこの辺の情報に辿り着けなかったんだああああああああああああああああああああああああ。うんこおおおおおおおおおお。

Firefoxアドオン開発-アドオンのテスト

開発中のアドオンのテストする時にいちいちXPI更新するのは面倒なので下記のような方法を使っているわけです。

一回addons.mozilla.orgにUPしてインストールした時に、IDが同じだからローカルのが消えちゃってたわけですね。(消しちゃってたのかもだけど)

んでもっかいやろうとした時にアレ?っとなったのでメモしとく。

ちなみにプロファイルフォルダは自分の場合はここ↓にありましたよ。

C:\Documents and Settings\[ユーザー名]\Application Data\Mozilla\Firefox\Profiles\プロファイルフォルダ

 

以下 Building_an_Extensionより

テスト

最初に、我々はあなたの拡張機能の存在を Firefox に伝えなくてはなりません。昔、Firefox 1.0 の頃にはこれは、あなたの拡張機能を XPI としてパッケージ化して、ユーザインタフェースを通じてそれをインストールする事を意味していました。これが実に辛い。でも、今はもっとずっと簡単です。
  1. あなたの環境の プロファイルフォルダを開いてください。
  2. そこにある extensions という名前のフォルダを開いて下さい。(なければ作成して下さい。)
  3. 新しいテキストファイルを作成して、その中にあなたの機能拡張フォルダのパス(例:「C:\extensions\myExtension\」とか「~/extensions/myExtension」とか。)を書いて、そのファイルをあなたの拡張機能のIDと同じ名前(例:「sample@foo.net」)で保存して下さい。
これで拡張機能のテストの準備ができました!
Firefoxを起動します。Firefox はあなたの拡張機能のディレクトリへのテキストリンクを検出して、そして拡張機能をインストールしてくれます。ブラウザウインドウが表示されると、ステー タスバーパネルの右側でテキスト「Hello, World!」と表示されているのが見えるでしょう。
戻って「.xul」ファイルを修正した場合も、ファイルを閉じて Firefox を再起動すれば、その結果が反映されます。

んで更にアドオンで再起動ボタンとか入れとくと楽だと思う。

2012年6月30日土曜日

ドラゴンクルセイド2F用Firefoxアドオン開発

ドラゴンクルセイド2Fのユーザーインターフェースがクソすぎるので勉強がてらFirefoxアドオンを作ってみることにした。

そもそもの始まりはゲーム内チャットが使いづらすぎることだった。
  • 日本語入力を確定するとチャットが送信されてしまう事
  • チャットにスクロールバーがついているのに過去の発言を閲覧しようとしてスクロールしてると、勝手に最新の発言のところまで戻されてちゃんと見れない事
というわけでFirebugで通信内容を覗いたら普通にチャットの発言とか覗けたので、アドオンとしてつくれるんじゃねぇか?って妄想した。
Firefoxのアドオンは作ったことなかったので魔法使いとしてはやってみる必要があると思った。

で、アドオンの作り方から調べて、現在の機能
  • ログインは2サバ限定(簡単に変更できると思う)
  • 世界とギルドチャットの取得(約5秒間隔)
  • ギルドチャットでの発言

これから作る予定の機能
  1. 税金の自動徴収
  2. 城のリスト表示
    • 建築中物件の表示
    • 物件のアップグレード
あと色々妄想するところはあるけど、モチベが続くかどうかが問題だ。
例えば便利そうで実現できそうなのは
最寄りの野外資源地検索
建築キュー(通常2件までだが、終わったら自動的に次を入れれるようにする)
自動最上級兵士生産
自動狩り

ってやり過ぎるとただのBOT・・・?

 DC2Fサポートツール(Firefoxアドオン)


2012年3月29日木曜日

symfony始めました-schema.ymlの作成

どんなDBを使うかモヤモヤと考える。
じゃあMySQLでテーブルはこんな感じかなっとノートにでも書きながら想像する。(省略可)
shema.ymlを書く。
書き方はこの辺を参考に。
Practical symfony 3日目: データモデル
The symfony and Doctrine book
INTの種類の指定の仕方
下記のようなコマンドを打って、うはーすげーな便利だなーと感動する。
php symfony doctrine:build --model
php symfony doctrine:build --sql
php symfony doctrine:insert-sql


タイムゾーンがどうとかいわれたらphp.iniにタイムゾーン設定してあるか確認する。
(してなかったので設定した date.timezone = Asia/Tokyo)

そして3番目(テーブルを実際に作成するコマンド)でハマる。
Couldn't locate driver named mysql
とか言われる。

こちらで言われている通り、確認してみる。
そういえばこれsymfony導入時にもやったじゃんと思いつつ。
・・・モジュール版(?)とCLI版で結果違う・・・?
下記コマンドでphpinfoが見れますよ。
php -i
/usr/bin/php -i
/usr/local/bin/php -i

結論から言えばCLI版のphp.iniにextension=pdo_mysql.soを書き足せばよかったってっ事。
Scan this dir for additional .ini files = (none)
って感じでCLI版はnoneになっちゃってるのが混乱の元だったんだ。

もともと以前確認した時モジュール版はOKだったはず
今思えばこの時も本当はさほど問題なかったんじゃないかと思う。

pecl install pdo-mysql とかpecl install pdo とかやっちゃったけど
これがまたまずかったらしい。
これのせいでモジュール版のPDOからもmysqlが消える。
今は標準でPHPにバンドルされていて、設定を書き換えれば済むところ、古いもので上書きした感じになったようだ?

色々嵌りに嵌ってぐるぐるぐると回りまわって
最終的にこちらで納得して解決。

2012年1月31日火曜日

symfonyはじめました-symfonyのインストール

Getting Started with symfony
symfonyのインストール


プロジェクト用のディレクトリを作る。 $ mkdir -p /home/sfproject
$ cd /home/sfproject
symfonyのライブラリのファイルをぶっこむディレクトリを作る $ mkdir -p lib/vendor ここからダウンロードしてきて展開する。 $ cd lib/vendor
$ tar zxpf symfony-1.4.16.tgz
$ mv symfony-1.4.16 symfony
$ rm symfony-1.4.16.tgz
symfonyのバージョンを表示するコマンドを使うことでsymfonyが正しくインストールされていることを確認 $ cd ../..
$ php lib/vendor/symfony/data/bin/symfony -V
終わり。簡単ですね。

おまけ $ php lib/vendor/symfony/data/bin/symfony で色々見れる。

ServerQueenのVPSにPHP5.3.9をソースからインストール

CentOS5.7でPHPのバージョンが5.2.17でしたとさ。
rpmでインストールされてました。
これを5.3にしたかった。
とりあえずまずはソースをダウンロード
http://www.php.net/downloads.php
最新安定版の5.3.9をダウンロードしました。

apacheを停止(しなくてもよかったのかもしれないが)

sudo service httpd stop ソースを解凍してインストールを試みる configureのオプションはすでにインストールされていたPHPのphpinfoを見てそれっぽいところをいじった。 tar jxf php-5.3.9.tar.bz2
cd php-5.3.9
./configure --host=i686-redhat-linux-gnu --build=i686-redhat-linux-gnu --target=i386-redhat-linux --program-prefix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/usr/com --mandir=/usr/share/man --infodir=/usr/share/info --cache-file=../config.cache --with-libdir=lib --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --disable-debug --with-pic --disable-rpath --with-bz2 --with-curl --with-exec-dir=/usr/bin --with-freetype-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-gettext --with-gmp --with-iconv --with-jpeg-dir=/usr --with-openssl --with-zlib --with-layout=GNU --enable-exif --enable-ftp --disable-magic-quotes --enable-sockets --enable-sysvsem --enable-sysvshm --enable-sysvmsg --enable-wddx --with-kerberos --enable-ucd-snmp-hack --enable-shmop --enable-calendar --with-libxml-dir=/usr --enable-xml --with-apxs2=/usr/sbin/apxs --with-mysql --with-gd --enable-xmlreader --enable-xmlwriter --enable-json --enable-mbstring --enable-mbregex --with-xsl=/usr/lib
make
make install
で、確認 php -v
PHP 5.3.9 (cli) (built: Jan 31 2012 02:21:02)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
というわけで、CLI版は問題なさそうだったんだけど、モジュール版(?)のphpinfoを見てみたらバージョン変わってなくて、しばしハマることになる。
グーグル先生の話ではlibphp5.soがバグで生成されないとのことだそうで
下記のサイトなどを参考にlibphp5.soを生成してからインストールという手順でいくことにした。
PHP5インストールでのlibphp5.soバグ対応
すると今度は
error: Could not find pcre.h in /usr
とかなんとか言い出した。
こちらを参考にしたが、すでにPCRE自体はインストールされていた。
rpm -qs pcre
インストール先を確認して、パスを指定する。
しかし上手くいかないのでいっそ何も指定せずにインストールしたらうまくいった・・・。
参考
で、libphp5.soが生成できて、もう一度コンフィグ作りなおして、インストールして終わりだったと思う。 すでにうろ覚えなのでこの記事の正確性は保証できません!
はい、おつ。