2

PHP 拡張機能を作成し、Mac の Apache サーバーで実行しようとしています。

コマンドライン経由で正常に実行されます。次に例を示します。

$ php -r 'dl("mylib.dylib");

また、ソースから Apache をビルドしようとしましたが、それを実行すると完全に動作します (Mac の組み込み Apache と同じ PHP を使用するようにセットアップしたので、違いはありません)。

ただし、拡張機能をデフォルトの Apache でロードすると、[システム設定] -> [Web 共有] を使用するか、sbin で同等の apachectl を使用すると、次のように表示されます。

Warning: dl() [function.dl]: Unable to load dynamic library '/usr/lib/php/extensions/mylib.dylib' - (null) in /Users/myuname/Sites/test.php on line 6

Mac の Apache に何か奇妙な点がありますか、それとも私が設定しなければならないパーミッションがありますか?

4

2 に答える 2

2

これは、アーキテクチャの違いによって引き起こされる一種のエラーのように思えます。aを実行file /usr/lib/php/extensions/mylib.dylibして、バイナリに含まれるアーキテクチャを確認してください。IIRC、Apache は Leopard で 64 ビットとして実行されるため、実行しているプロセッサ (ppc64 または x86-64) の 64 ビット バージョン用のコードがライブラリに含まれていることを確認する必要があります。

于 2009-02-17T16:36:44.693 に答える
0

実際、あなたの頭を悩ませているのはおそらく 64 ビットのものでしょう。拡張機能をコンパイルするときに、「-arch x86_64」を gcc に渡してみてください。

于 2009-02-20T06:00:40.920 に答える