2012-12-12 38 views
0

我已經在Cygwin上成功編譯了PHP 5.4.9,但現在我無法動態加載MongoDB擴展。這是PHP的CLI輸出:無法在Cygwin上加載動態PHP擴展

$ php -v 
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-non-zts-20100525/mongo.dll' - No such file or directory in Unknown on line 0 

但是,它肯定是存在的:

$ ls -l /usr/local/lib/php/extensions/no-debug-non-zts-20100525/mongo.dll 
-rwxr-xr-x 1 Linker None 204288 Dec 12 02:12 /usr/local/lib/php/extensions/no-debug-non-zts-20100525/mongo.dll 

的DLL文件已經從官方MongoDB的GitHub庫下載。它實際上改名爲php_mongo-1.3.1-5.4-vc9-nts.dll。 好奇的時刻:當我嘗試用x86_64版本(這是我的操作系統版本)替換它時 - 它表示DLL的exec格式錯誤。

回答

2

如果你downlaoded擴展它的內置運行本地Windows DLL與PHP使用Visual Studio編譯。使用cyhwin-gcc編譯的PHP無法使用它。

要麼將​​自己的擴展編譯成cygwin .so,要麼使用使用visual studio編譯的PHP(後者是首選)

+0

謝謝!實際上,起初我也試着編譯擴展名,但是它產生了'.a'文件,這是不合適的。你知道如何強制編譯器生成'.so'嗎?如果沒有辦法 - 我會嘗試在VC中重新編譯PHP。 – ualinker

+0

我找到了解決方法 - 使用本手冊靜態編譯擴展:http://php.net/manual/en/install.pecl.static.php – ualinker