【问题标题】:Can't get mcrypt to work on OS X High Sierra and PHP 7.1无法让 mcrypt 在 OS X High Sierra 和 PHP 7.1 上工作
【发布时间】: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?添加仅带有&lt;?php phpinfo(); ?&gt; 的.http 文件并检查是否存在mcrypt。请记住 mcrypt 在 7.1 中已弃用并在 7.1 中删除 php.net/manual/en/migration71.deprecated.php
  • 这可能更适合 wordpress.stackexchange.com。
  • @Damian。这就是我所做的,来自 phpinfo() 的结果没有显示 mcrypt 的迹象,但也表明使用的是正确的 php.ini。

标签: php macos mcrypt


【解决方案1】:

事实证明,这是 Apache+PHP 的问题。我按照此处https://getgrav.org/blog/macos-sierra-apache-upgrade-homebrew(已针对新版本OSX 10.14 Mojave 更新)和此处的建议重新安装了Apache 和PHP:https://getgrav.org/blog/macos-mojave-apache-multiple-php-versions

我的站点来自以前的站点:

从旧的酿造配方迁移到新的 pecl 最干净的方法 打包方法是删除所有与 PHP 相关的内容并重新安装 使用新的说明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 2018-06-18
    • 2018-10-07
    • 2015-12-29
    相关资源
    最近更新 更多