Zend extension を extension_dir からロードできるようにしてみた

最近 PHP の拡張である xdebug をインストールしてみた。
使ってみると、なかなか便利。プロファイリングとかとれて、どこが処理のボトルネックになってるかよく分かります。
なんかエラーメッセージとかも分かりやすくなってるし。これはイイ!!

xdebug をインストールしてみて気づいたのですが、xdebug は普通の extension ではなく、zend extension なんですね。
この extension と zend extension の違いはよく分かってないのですが、なぜか zend extension の場合は extension_dir の指定が効かない!!
zend extension をロードするときだけ、絶対パスで指定しないといけないのです。
(相対パスでもいいんだろうけど extension_dir のように基準ディレクトリを指定できない)

どうにもこうにも納得がいかないので、いろいろいじってみてパッチを作ってみました。
zend_extension_dir.patch

zend extension をロードする関数に渡ってきた文字列が絶対パスでない場合は、extension_dir を先頭に付加してやるという単純なパッチです。

cd php-x.y.z
patch -p0 < zend_extension_dir.patch
でパッチを当てることができます。

このパッチを当てて、php.ini に

zend_extension=xdebug.so

って書いたら、バッチリ extension_dir にある xdebug.so を読み込んでくれました。
やったね!!

PHP 4.3.11, 4.4.2, 5.1.2 で動作確認済みです。

これで本当に大丈夫なのかよく分からないんだけど。教えて > エロい人

zend extension と extension の違いなんですけど、ソースコード読む限りは zend extension は初期化時にだけロードされて、extension の方はソースコードからでも(もちろん初期化時も)ロードできるようになってるみたい。
zend extension と extension の違いってプログラム中でロードできるかどうかの違いだけなのだろうか?
教えて > エロい人

トラックバック(0)

このブログ記事を参照しているブログ一覧: Zend extension を extension_dir からロードできるようにしてみた

このブログ記事に対するトラックバックURL: http://blog.bz2.jp/bz2mt/mt-tb.cgi/131

コメント(2)

xdebugって重くないですか?

自分のマシンが弱いだけ…そうですか。

重いかどうかはたいして問題ではなくて、やっぱり利便性だよね。
重いのが気になるのなら、公開サーバで入れなければいいだけの話なので。

ウェブページ

Powered by Movable Type 4.21-ja

このブログ記事について

このページは、masatoが2006年4月 3日 01:37に書いたブログ記事です。

ひとつ前のブログ記事は「Ultra SPARC がオープンソースになった!!」です。

次のブログ記事は「愛媛県警がまた Winny で情報漏洩」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。