2012-12-12 37 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