diaryこの広告は、90日以上更新していないブログに表示しています。2013-01-15coreserverでphp5.3.8用のAPCをビルドしてみたけどうまくいかなかったphpcoreserverのPHPは5.2.5がデフォルトだけど、CGIモードにすると5.3.8か5.4.7が使えます。CakePHP2系は5.2.8以上が必要なので、coreserverでCakePHP2系を使うならCGIモードで5.3.8以上のどちらかにしないとです。kanonjiの日記で調べたapc.soが動かない事に気がつきました。レスポンスが悪く、APCを使いたいなと思っていたところなので、なんとかしようと、APCをソースからビルドしようと色々やってみました。結果は行き詰まってしまって、お手上げ状態なんだけど、やってみた事をまとめておきます。file.見慣れないエラー、多分phpじゃなくApacheのエラーだと思う。5.4.7用のapc.soが無いか探したり、その流れでビルドを試しました。試す中、CGIモードphpのバージョンを5.3.8と5.4.7とで、何度も切り替えてたので、コマンドとかが5.3だったり5.4だったりします。解決しない事は一緒だし恐らく問題点も一緒だと思います。installここで、なぜか--prefix指定を無視して/usr/localにinstallする動きをします。共用サーバーなので当然パーミッションは無く書き込めないけど、なぜ--prefixが無視されるんだろうか。/virtual/myuser/myhome/local/lib/php54/extensions仕方ないのでmakeで生成されたファイルをcpでコピー。"/virtual/myuser/myhome/local/lib/php54/extensions/"extension=apc.soこの内容でphp.iniを作ってこれでAPCが使えるかと思いきや、前述と同じエラーが出ました。Errorをよく読んでみると、デバッグ手段が書いてある事に気がつきました。拡張子を.phpdに変える*1か、MimeTypeをapplication/x-httpd-phpcgi-debugにすると、デバッグ出来るらしい。#5.4.7coreserverはこれでphpのバージョンを使い分けます。.php試しにやってみたら、デバッグ出来ました。この辺はちゃんとそれぞれ用意してあるみたいです。今書いてる最中に気がついたけど、AddHandlerじゃなくてAddTypeを使っちゃってました。指定したバージョンでのデバッグになってたので、このサーバーではどっちで設定しても良い様にしてあるんだと思います。API=20100525デバッグでは、phpの普段意識しない低レイヤー部の動きを表すデバッグ出力が、ブラウザに出てました。その中に、APCモジュールの初期化に失敗しているメッセージがあり、理由としてはphpとAPCモジュールで、コンパイル時に使ったAPI*2のバージョンが違うといったもの。coreserverに元々あったAPCでも、自分でビルドしたAPCでも、同じ理由で初期化に失敗しているようです。220060519phpizeした時に似たようなものが出ていたので、次はphpizeを調べることに。No」が「20100525」になれば解決出来そうな感じ。${prefix}/include`/php"builddir="`pwd`"SED="/usr/bin/sed"[snip]phpize、ここでは5.4系用のphp54izeだけど、の中身は単にシェルスクリプトみたいなので、中を見てみました。configureのprefixと同じものか分からないけど、prefix='/usr/local'と決めうちになってたりします。この辺が怪しい様な感じです。./php54ize_exec_prefix=/usr/localphpdir=/usr/local/lib/php/buildincludedir=/usr/local/include/phpphp54izeをコピーして、変数をechoしてみました。phpdir、includedirとか、異なるバージョンのphpが入ってる環境で、どうなるのか、気になります。scan_makefile_in.awk試しにphpdirの中を確認してみると、どうもビルドに必要そうなファイルが入ってました。filesを探してる的なメッセージもあります。この辺りから、異なるバージョンのphpを同居させるにあたってphpizeは単に別名で保存しておくだけじゃなく、中で序盤に定義してある変数の書き換えや、phpdirに有るべきビルドファイルも、バージョン毎に残しておく必要が有るんじゃないかと思いました。この仮定が合っている場合、ビルドに必要なファイルが無いってことになるので、ここで行き詰まりです。1.3.37*1:エラーメッセージだと.phpdextensionとなってるけど、多分スペース抜け落ちだと思う。月別アーカイブはてなブログをはじめよう!kanonjiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。