【问题标题】:PHP Warning: PHP Startup: Unable to load dynamic library 'mcrypt.so'PHP 警告:PHP 启动:无法加载动态库“mcrypt.so”
【发布时间】:2018-09-30 14:00:47
【问题描述】:

我正在尝试在 ubuntu 06.04 上使用 composer update 来更新 laravel,但每次我运行 composer update 这个警告总是会出现。

PHP Warning:  PHP Startup: Unable to load dynamic library 'mcrypt.so' (tried: /usr/lib/php/20170718/mcrypt.so (/usr/lib/php/20170718/mcrypt.so: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/mcrypt.so.so (/usr/lib/php/20170718/mcrypt.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0

有人知道怎么处理吗?

我使用的是php7.2

【问题讨论】:

标签: php server ubuntu-16.04


【解决方案1】:

我在 Ubuntu 18 上安装 Php7.2 时遇到了类似的问题。虽然我已经使用 PECL 安装了 mcrypt,但我仍然收到问题中提到的错误。

我做了以下修复它

sudo apt-get install php-pear php7.2-dev

然后卸载

pecl uninstall mcrypt

现在重新安装 mcrypt

sudo apt-get -y install gcc make autoconf libc-dev pkg-config
sudo apt-get -y install libmcrypt-dev
sudo pecl install mcrypt-1.0.1

当你看到提示时

libmcrypt prefix? [autodetect] :

按 [Enter] 自动检测。

使用pecl成功安装mcrypt后,你应该在php.ini中添加mcrypt.so扩展。

输出将如下所示:

...
Build process completed successfully
Installing '/usr/lib/php/20170718/mcrypt.so'    ---->   this is our path to mcrypt extension lib
install ok: channel://pecl.php.net/mcrypt-1.0.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=mcrypt.so" to php.ini

现在重启 Apache

sudo service apache2 restart

获取安装路径并添加到 cli 和 apache2 php.ini 配置中。

sudo bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/cli/conf.d/mcrypt.ini"
sudo bash -c "echo extension=/usr/lib/php/20170718/mcrypt.so > /etc/php/7.2/apache2/conf.d/mcrypt.ini"

【讨论】:

  • 你真是个救命稻草,我已经为这件事苦苦挣扎了一整天,我认为你的最新命令成功了。谢谢!
  • @yehanny 很高兴我的回答对您有所帮助。
【解决方案2】:

首先,打开一个终端窗口并使用命令安装必要的依赖项:

sudo apt-get -y install gcc make autoconf libc-dev pkg-config
sudo apt-get -y install php7.2-dev
sudo apt-get -y install libmcrypt-dev

依赖安装完成后,你可以使用以下命令安装 mcrypt:

sudo pecl install mcrypt-1.0.1

然后就可以了。现在已安装 Mcrypt。回到安装依赖此扩展的任何服务器软件的过程,您应该一切顺利。

【讨论】:

  • 我在sudo pecl install mcrypt-1.0.1上得到同样的错误
  • 注意:尝试访问第 187 行 PEAR/REST.php 中 bool 类型值的数组偏移量 PHP 注意:尝试访问 /usr/share/php/ 中 bool 类型值的数组偏移量PEAR/REST.php 第 187 行 注意:尝试访问 PEAR/REST.php 中 bool 类型值的数组偏移量 第 187 行 PHP 注意:尝试访问 /usr/share/p hp 中 bool 类型值的数组偏移/PEAR/REST.php on line 187 pecl/mcrypt 需要 PHP(版本 >= 7.2.0,版本
【解决方案3】:

对于 (>= PHP 7.3),您可以使用以下命令:

sudo pecl install mcrypt-1.0.2

【讨论】:

    【解决方案4】:

    当我将 PHP 升级到 7.3 时遇到了这个问题

    我发现 mcrypt.so 仍然存在于 /etc/php/7.3 中,不应该因为它在 php 7.3 中已被弃用,所以只需 /etc/php/7.3 中删除 mcrypt.so 即可解决问题。

    我使用了以下命令:

    cd /etc/php/7.3

    sudo rm -rf mcrypt.so

    sudo service apache2 重启

    【讨论】:

      【解决方案5】:

      İts 对我有用。

      导出 LC_ALL="C"

      export LANG="C

      sudo pecl 安装 mcrypt-1.0.1

      【讨论】:

        【解决方案6】:

        另外,如果您使用的是 php 7.2 并且遇到此错误并且您知道不想要/不需要 mcrypt,但不知道如何排除它....您需要编辑 php.ini 文件并添加评论通过在它前面使用分号来解决这个问题:

        ; extension=mcrypt.so
        

        或者直接删除那一行。

        【讨论】:

        • 在 /etc/php/7.2/mods-available/mcrypt.ini 中也发表评论
        猜你喜欢
        • 2018-08-21
        • 2021-08-27
        相关资源
        最近更新 更多