我需要使用使用mcrypt的Wordpress第三方插件。 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的问题。我按照 https://getgrav.org/blog/macos-sierra-apache-upgrade-homebrew 这里的建议重新安装了Apache和PHP(此后已针对新版本OSX 10.14 Mojave进行了更新(和此处:https://getgrav.org/blog/macos-mojave-apache-multiple-php-versions
我从以前的网站:
从旧酿造配方迁移到新 pecl 的最干净方法 包方法是删除所有与PHP相关的内容并重新安装 使用新说明。