【问题标题】:PHP unable to load dynamic library (mongo.so)PHP 无法加载动态库 (mongo.so)
【发布时间】:2014-06-04 06:11:57
【问题描述】:

我正在尝试使用rockmongo。安装后,我无法使用它。它说“要使事情正确,您必须安装 php_mongo 模块。这里是 PHP.net 上的安装文档。

我已经通过sudo pecl install mongo安装了mongoDB驱动扩展。

locate mongo 显示/usr/lib/php5/20090626+lfs/mongo.so

但是,php -v 显示的警告很少(我认为这与 mongo 有关)

PHP:  syntax error, unexpected $end, expecting ']' in /etc/php5/cli/conf.d/mongodb.ini on line 3
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20100525+lfs/mongo.so' - /usr/lib/php5/20100525+lfs/mongo.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 5.4.28-1+deb.sury.org~precise+1 (cli) (built: May  5 2014 09:39:26) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

我打开/usr/lib/php5/,发现还有一个目录(20090626+lfs),里面有mongo.so。

我尝试了各种在线教程,但没有任何帮助。

编辑:这是我的 mongodb.ini

;----- start -----
extension=mongo.so
\[mongo\]
; If the driver should reconnect to mongo
mongo.auto_reconnect = true
; Whether to allow persistent connections
mongo.allow_persistent = On
; Maximum number of persistent connections (-1 means unlimited)
mongo.max_persistent = -1
; Maximum number of links (persistent and non-persistent, -1 means unlimited)
mongo.max_connections = -1
; Default host for mongo connection
mongo.default_host = www.example.com
; Default port for mongo database
mongo.default_port = 42
; When saving files to the database, size of chunks to split them into
mongo.chunk_size = 1024
; Specify an alternate character to $ to use for special db functions ($set, $push, $exists, etc.)

mongo.cmd = "$"
;----- end -----

【问题讨论】:

标签: php mongodb


【解决方案1】:

我使用 php 5 的 1.1.9 版本的 mongodb 驱动程序解决了这个问题。先卸载当前版本的mongodb,再安装1.1.9版本:

sudo pecl uninstall mongodb
sudo pecl install mongodb-1.1.9
composer update

【讨论】:

  • 这仍然是最新的吗?
  • 对我来说 1.1.9 版不起作用。但是我在pecl.php.net/package/mongodb(它是1.4.4)检查了最新版本并安装了它。一切正常。
  • 事实上,我为 php 7.2 安装了最新的 mongodb 驱动程序,它运行良好。但是对于 php 5 版本(这篇文章)我建议使用 mongodb 驱动程序 v1.1.9。当前版本只需要执行命令:sudo pecl install mongodb
【解决方案2】:

对我来说效果很好

sudo apt-get install php7.2-mongodb

为您的 php 版本更改“7.2”

【讨论】:

    【解决方案3】:

    我的 php 版本是 7.0,但它应该也可以使用 5.x 版本。

    如果你在文件/etc/php/7.0/mods-available/mongo.ini中有这个

    extension=mongodb.so
    

    评论该行。之后重新启动 php,它应该可以工作了。

    【讨论】:

      【解决方案4】:

      mongodb.ini 中添加 mongo.so 扩展的完整路径:

      extension=/usr/lib/php5/20090626+lfs/mongo.so
      

      [mongo] 也应该写成和 NOT \[mongo\] 完全一样。

      不要忘记重新加载/重启您的网络服务器以加载新配置。

      您可以通过以下方式检查一切是否正常:

      php -i | grep mongo 
      

      【讨论】:

      • 我编辑了/etc/php5/apache2/php.ini 并将extension=mongo 更改为extension=/usr/lib/php5/20090626+lfs/mongo.so。此外,将etc/php5/apache2/conf.d/mongodb.ini 中的\[mongo\] 更改为[mongo]。重启阿帕奇。还是一样的错误
      • 您在php.ini 中更改了extension=mongo,但错误在mongodb.ini 中。从 php.ini 中删除 extension=.. 行并在 mongodb.ini 文件中进行更改。
      • 同样的错误。 php -v 显示PHP Warning: PHP Startup: mongo: Unable to initialize module Module compiled with module API=20090626 PHP compiled with module API=20100525 These options need to match in Unknown on line 0
      • 您有两个错误:一个语法无效,另一个错误的 mongo.so 文件路径。你现在的错误是什么?
      • 这两个错误现在都消失了。但我仍然无法打开localhost/rockmongo。它在终端上再次显示To make things right, you must install php_mongo module. Here for installation documents on PHP.net.Also, i typed php-v`,并显示上述警告(无法初始化模块)
      【解决方案5】:

      操作系统更新后,我在运行任何 PHP CLI 时遇到了类似的错误,只需运行“php -v”就会产生错误:

      PHP 警告:PHP 启动:无法加载动态库 '/usr/lib/php/20131226/mongodb.so'

      我检查了文件夹,发现文件'/usr/lib/php/20131226/mongodb.so'存在。因此,我只是在“/etc/php/5.6/cli/php.ini”文件中的“extension=mongo.so”行上进行了评论。它解决了我的问题。

      当检查 mongo --version 时,它工作正常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-25
        • 2019-04-03
        • 1970-01-01
        • 2011-11-21
        • 2015-03-01
        • 2017-09-25
        • 2022-08-07
        • 2021-04-03
        相关资源
        最近更新 更多