我在运行PHP的MongoDB扩展时遇到问题
阅读本文末尾的解决方案
我使用3种不同的方法成功安装了它,但它没有在phpinfo()
中显示扩展名1 - 在php.ini中使用pecl install mongo(它成功并要求我添加extension = mongo.so) 2 - 通过下载源编译它。 3 - 从yum安装php-pecl-mongo
所有方法都成功没有错误但是当我运行phpinfo时,我没有看到Mongo扩展加载,当我尝试调用它时要求安装扩展。
如何调试此问题(即我在哪里可以找到此类日志)
如何查找有关Mongo与PHP 5.3.8兼容性的信息?
这是我在安装结束时得到的结果:
注意:我确定我已将mongo.so文件复制到php的扩展路径,因为我正在使用同一目录中的其他扩展程序并且它们正在工作
Libraries have been installed in:
/sources/mongo/mongodb-mongo-php-driver-d7c19b8/modules
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts -20060613/
-bash-3.2# cp /usr/local/lib/php/extensions/no-debug-non-zts-20060613/mongo.so /
已修复 - >问题是我的php api与PHP的版本不同,即php-devel / php5-devel需要更新。
答案 0 :(得分:2)
手动编译模块时,必须将其复制到PHP知道在哪里查找自定义模块的路径。
从cli中,尝试以下命令:
php -i | fgrep -i configure
您应该看到如下选项:
--with-config-file-scan-dir=/bridge/to/nowhere
在编译模块之后,确保将模块从mongo源目录复制到/ bridge / to / nowhere目录,以便PHP可以将其拾取。
运气好的话,应该在你php -m
时列出。
答案 1 :(得分:0)
如果将php.ini文件中的“extension=mongo.so
”行更改为:
extension=/usr/local/lib/php/extensions/no-debug-non-zts-20060613/mongo.so
当php启动时,它是否会产生任何错误消息?如果没有,请验证php -i |grep -e 'Loaded Configuration File'
是否显示了预期的php.ini文件。
mongodb php扩展应该可以正常使用php v5.3.8(和php-fpm)。