Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mac上的PHP扩展_Php_Apache_Macos_Php Extension - Fatal编程技术网

Mac上的PHP扩展

Mac上的PHP扩展,php,apache,macos,php-extension,Php,Apache,Macos,Php Extension,我编写了一个PHP扩展,并试图让它在Mac的Apache服务器上运行 它可以通过命令行正常运行,例如: $ php -r 'dl("mylib.dylib"); 我还尝试从源代码构建Apache,当我运行它时,它可以完美地工作(我将它设置为使用与Mac内置Apache相同的PHP,所以没有区别) 但是,当我使用默认的Apache加载扩展时,您可以使用System Preferences->Web Share或者sbin中的apachectl,它会显示: Warning: dl() [funct

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

它可以通过命令行正常运行,例如:

$ php -r 'dl("mylib.dylib");
我还尝试从源代码构建Apache,当我运行它时,它可以完美地工作(我将它设置为使用与Mac内置Apache相同的PHP,所以没有区别)

但是,当我使用默认的Apache加载扩展时,您可以使用System Preferences->Web Share或者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有什么奇怪的地方吗?或者我必须为它设置一些权限吗?

这听起来像是架构差异导致的那种错误。尝试执行
文件/usr/lib/php/extensions/mylib.dylib
,查看二进制文件中包含哪些体系结构。IIRC,Apache在Leopard上运行时是64位的,因此您需要确保您的库中包含您正在运行的任何处理器(ppc64或x86-64)的64位版本的代码。

事实上,可能是64位的东西在折磨您。编译扩展时,请尝试将'-arch x86_64'传递给gcc。

谢谢,编译为64位使它工作得非常好!有很多32位的库,我没有意识到这取决于它们,所以我也不得不重新编译它们,然后它就工作了。