Mac上的PHP扩展
我编写了一个PHP扩展,并试图让它在Mac的Apache服务器上运行 它可以通过命令行正常运行,例如: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 -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位的库,我没有意识到这取决于它们,所以我也不得不重新编译它们,然后它就工作了。