こういう感じで普通に拡張モジュールをプログラムでロード。
今回はかの有名な全文検索モジュールnamazuだったわけですが。
if ( ! extension_loaded('namazu')) { if ( ! dl('namazu.so')) { abort( "なまずは泳げませんでした"); } }
いざ実行してみると、 Fatal error: Call to undefined function dl() in... とdlの部分でげに恐ろしきFatal errorになる。
PHP公式マニュアルには『この関数は、PHP 5.3 以降でいくつかの SAPI からは削除されました。』とあるものの、普通のCGI版だし5.3.6だし動くはず・・・と小一時間悩む。
だいたいいくつかのSAPIって何が該当するのかもわからない。
configureも'--disable-debug'等余計なことはやってない。(enableでもなかったが)
で、結局下記の方法で解決。
- php.iniのenable_dlをOffからOnに
- dlで実際に呼んでいるモジュール(今回はnamazu.so)をphp.iniに追加
※extディレクトリにはnamazu.soをいれておくこと。
php.iniでsoのフルパス指定でもおそらくOK。
なんと通ったよ!!やったー!やったよーー!!
ナマズが泳いだよー!!!
それにしてもdlで呼んでいるものをいちいち指定しなければならないのだろうか。謎。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。