2

我写了一个 PHP 扩展,我试图让它在 Mac 的 Apache 服务器上运行。

它通过命令行运行良好,例如:

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

我还尝试从源代码构建 Apache,当我运行它时它运行良好(我也将它设置为使用与 Mac 的内置 Apache 相同的 PHP,所以没有区别)。

但是,当我使用默认的 Apache 加载我的扩展时,您可以使用 System Preferences->Web Sharing 或等效地使用 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

这听起来像是由架构差异引起的那种错误。尝试执行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 回答