【发布时间】:2019-02-25 18:49:16
【问题描述】:
我需要使用一个使用 mcrypt 的 Wordpress 3rd 方插件。 mcrypt 在我的环境(OSX High Sierra 和 PHP 7.1)中默认不可用(而且我知道它已被弃用......)所以我用 PECL 安装了它。安装的 mcrypt.so 文件是在这个位置创建的:
/usr/lib/php/extensions/no-debug-non-zts-20160303/
我已将以下内容添加到我的 php.ini 中:
extension=/usr/lib/php/extensions/no-debug-non-zts-20160303/mcrypt.so
然后
php -i | grep mcrypt
返回
Registered Stream Filters => zlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, mcrypt.*, mdecrypt.*
mcrypt
mcrypt support => enabled
mcrypt_filter support => enabled
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no value
和
php -m | grep mcrypt
返回
mcrypt
对我来说,这意味着 php 现在可以使用 mcrypt。
我重新启动 Apache,但仍然出现致命错误:
**Fatal error**: Uncaught Error: Call to undefined function mcrypt_module_open() in /User.....
并显示一个页面
<?php phpinfo(); ?>
在模块之间不显示 mcrypt。但它是使用正确的 php.ini。所以对我来说,这意味着 php 从命令行启动时可以使用 mcrypt,但从 Apache 启动时则不能。
我也尝试取消注释该行
LoadModule php7_module libexec/apache2/libphp7.so
在 httpd.conf 中,然后重启 apache,但是 结果是一样的。
有什么想法吗?
【问题讨论】:
-
也许 Apache 使用不同的 PHP?添加仅带有
<?php phpinfo(); ?>的.http 文件并检查是否存在mcrypt。请记住mcrypt在 7.1 中已弃用并在 7.1 中删除 php.net/manual/en/migration71.deprecated.php -
这可能更适合 wordpress.stackexchange.com。
-
@Damian。这就是我所做的,来自 phpinfo() 的结果没有显示 mcrypt 的迹象,但也表明使用的是正确的 php.ini。