【问题标题】:Unable to load dynamic library 'mongodb.so' - Debian 8 , PHP 7.2无法加载动态库 'mongodb.so' - Debian 8,PHP 7.2
【发布时间】:2018-12-07 06:17:48
【问题描述】:

我有一个带有 Debian 8 操作系统的 VPS 和一个带有 PHP7.2 的 DirectAdmin 面板

为了使用 MongoDB PHP 驱动程序,我使用命令 sudo pecl install mongodb 安装它。

安装后,我通过以下命令将驱动程序扩展添加到 php.ini 文件中:

echo "extension=mongodb.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||" 

但是好像没有安装驱动!因为当我执行 PHP 命令时,会遇到这个警告:

PHP 警告:PHP 启动:无法加载动态库 'mongodb.so' (试过: /usr/local/php72/lib/php/extensions/no-debug-non-zts-20170718/mongodb.so (/usr/local/php72/lib/php/extensions/no-debug-non-zts-20170718/mongodb.so: 无法打开共享对象文件:没有这样的文件或目录), /usr/local/php72/lib/php/extensions/no-debug-non-zts-20170718/mongodb.so.so (/usr/local/php72/lib/php/extensions/no-debug-non-zts-20170718/mongodb.so.so: 无法打开共享对象文件:没有这样的文件或目录))未知 在第 0 行

在我的本地(Windows)中一切正常,我将 Non Thread Safe (NTS) 驱动程序扩展添加到扩展目录,就这样!

我做错了什么? DirectAdmin 的 PHP 上安装 MongoDB 驱动和普通 PHP 上安装有区别吗?

更新:

MongoDB 也不在phpinfo(); 的结果中!

【问题讨论】:

  • 文件mongodb.so是否存在于扩展目录中?因为错误表明它没有。
  • 如果你的意思是/usr/local/php72/lib/php/extensions/no-debug-non-zts-20170718/,不!只有两个文件,opcache.a 和 opcache.so
  • 是的,所以修复您的extension_dir 配置并将.so 文件放在适当的文件夹中,问题就解决了。
  • 我真的不知道该怎么办! .so 文件的扩展名在哪里,修复是什么意思!
  • mongodb.so 文件安装在您更改它之前的扩展目录中...../usr/local/php72/lib/php/extensions 中有哪些文件夹?或者干脆使用find 搜索文件

标签: php mongodb php-7.2


【解决方案1】:

请确保 php 扩展目录是: /usr/local/php72/lib/php/extensions/no-debug-non-zts-20170718/

检查:

php -i |grep extension_dir

如果没有,有两种选择:

  1. 将php.ini中的extension_dir修改为 /usr/local/php72/lib/php/extensions/no-debug-non-zts-20170718/
  2. echo "extension=/full_path_through_pecl_installed/mongodb.so" > php.ini

【讨论】:

  • 地点正是你所说的。但是我如何检查 MongoDB 扩展是否在其中或任何其他应该存在的有效目录中?就是那个目录下的两个文件
  • 关注您的更新,请确保php -i |grep extension_dir 和phpinfo() 的结果相同。顺便确保 php cli php.ini 和 fpm php.ini 是同一个文件。
  • 在那个警告之后,这是我的结果:extension_dir => /usr/local/php72/lib/php/extensions/no-debug-non-zts-20170718 => /usr/local/php72/lib/php/extensions/no-debug-non-zts-20170718 sqlite3.extension_dir => no value => no value
  • fpm 和 php(cli) 可能使用不同的php.ini
  • 我应该如何检查它?并且 phpinfo 和该命令的值也相等
【解决方案2】:

问题在于 DirectAdmin,因为它有自己的 PHP 并且必须添加扩展。

当我运行sudo pecl install mongodb 时,它会显示默认的 VPS PHP。

这个命令解决了我的问题:

cp /usr/lib/php/20170718/mongodb.so /usr/local/php72/lib/php/extensions/no-debug-non-zts-20170718/mongodb.so

【讨论】:

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