2010-10-14 143 views
1

我試過用PECL構建庫,我試過從github下載它。我試過MAMP,我試過XAMPP。我總是得到相同的錯誤:無法讓PHP加載mongo.so擴展

PHP警告:PHP啓動:無法加載動態庫'/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts- 20090626/mongo.so' - dlopen(/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/mongo.so,9):找不到合適的圖像。找不到:\ n \ t/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/mongo.so:未知必需加載命令0x80000022

(路徑不同取決於XAMPP或甲基苯丙胺)

我運行OS 10.5.8。有任何想法嗎?

回答

0

剛剛離開那裏的錯誤消息,我可以告訴你這是一個架構相關的問題(例如,見this)。根據this question on their FAQ,XAMPP仍然只有32位,並且PECL默認將嘗試構建擴展爲64位。

然而,從2.0 1開始,MAMP和MAMP Pro同時出現在32位和64位二進制文​​件中。

但問題是,您的Mac是否有64位處理器,以及它是否默認運行64位OS X. This Apple support article提供了關於如何確定您擁有哪個Mac的指南。例如,如果您有2008-2010年的Macbook Pro,它可能默認運行32位內核,但是(請參閱文章),您可以將其設置爲運行64位內核。

您的目標的最快途徑可能是爲32位構建mongo.so。本文就using MAMP/PECL to install PHP extensions說,與PECL它應該是這樣簡單:

CFLAGS="-arch i386" ./pecl install 

如果不工作,你可以嘗試手動安裝,經過32位標誌來配置。有關可能適用於您的方法,請參閱this question for memcached.so installation

這應該工作(基於上面和manual installation instructions for the Mongo driver on php.net):

tar zxvf mongodb-mongodb-php-driver-<commit_id>.tar.gz 
cd mongodb-mongodb-php-driver-<commit_id> 
phpize 
MACOSX_DEPLOYMENT_TARGET=10.5 CFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" CCFLAGS="-arch i386 -arch x86_64 -g -Os -pipe" CXXFLAGS="-arch i386 -arch x86_64 -g -Os -pipe" LDFLAGS="-arch i386 -arch x86_64 -bind_at_load" ./configure 
sudo make install 

...然後參閱的手動安裝步驟上面休息的php.net鏈接(即添加在你的PHP擴展的.ini)。

+0

內核的位數根本不影響Mac OS X上的用戶空間。您可以在32位內核上運行64位應用程序,反之亦然。 – duskwuff 2012-01-20 06:21:16

+0

@duskwuff你說的是對的。然而,你無法做的事是使用帶有64位擴展名的32位MAMP。你可以用32位'mongo.so'運行32位MAMP,但是使用64位'mongo.so'不會起作用。 – natchiketa 2012-01-24 00:28:32