2009-02-17 97 views
2

我寫了一個PHP擴展,我試圖讓它在Mac的Apache服務器上運行。Mac上的PHP擴展

它運行通過命令行罰款,例如:

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

我也嘗試從源代碼編譯Apache,它完美的作品,當我運行(我將它設置爲使用相同的PHP作爲Mac的內置Apache也是如此,所以沒有區別)。

然而,當我打開我的分機使用默認的Apache你使用系統首選項 - > Web共享或等效的apachectl在sbin目錄,它說:

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或我必須設置一些權限?

回答

2

這聽起來像是由體系結構差異引起的那種錯誤。嘗試執行file /usr/lib/php/extensions/mylib.dylib並查看哪些體系結構包含在二進制文件中。 IIRC,Apache在Leopard上運行時爲64位,因此您需要確保您的庫包含64位版本的任何處理器的代碼(ppc64或x86-64)。

+0

謝謝你,編譯它爲64位使它完美的工作! 有一堆32位庫,我沒有意識到它依賴於,所以我不得不重新編譯這些,然後它的工作。 – kristina 2009-02-17 17:41:14

0

事實上,這可能是64位的東西,你在屁股咬你。嘗試在編譯擴展時將'-arch x86_64'傳遞給gcc。