在mac high sierra上安装php70-mcrypt

时间:2018-01-09 02:28:57

标签: macos php-7 mcrypt

我已经使用Homebrew安装了mcrypt,但它似乎没有加载。我通过运行安装:

brew install php70-mcrypt

当我在浏览器中运行phpinfo()时,我没有看到mcrypt的安装细节(除了模块作者)。

nginx是否使用了我从命令行获得的相同的php?或者我没有正确安装/启用mcrypt?

在浏览器中使用phpinfo():

phpinfo告诉我.ini路径:

phpinfo() screenshot extract

如果我检查/usr/local/etc/php/7.0/conf.d目录,则有两个.ini文件:

  1. EXT-intl.ini
  2. EXT-mcrypt.ini
  3. 但它们似乎没有被解析过。 mcrypt(我正在努力工作的那个)包含:

    screenshot of ext-mcrypt.ini contents

    和/ usr / local / opt / php70-mcrypt是Cellar位置的符号链接/usr/local/Cellar/php70-mcrypt/7.0.27_19,其中包含mcrypt.so文件。

    我已尝试直接将扩展名添加到php.ini文件中,无论是否有路径。每次我保存文件然后重启php(不确定,如果有必要......)和nginx:

    brew services restart php70
    brew services restart nginx
    

    仍未加载。

    使用终端:

    如果我从终端运行:

    php -i | grep mcrypt
    

    我明白了:

    /usr/local/etc/php/7.0/conf.d/ext-mcrypt.ini
    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
    

    这里似乎有更多细节。

    nginx是否在命令行中使用了不同的php?如果这是问题,我怎样才能确保nginx使用我在命令行看到的php?或者,我怎样才能将php安装到nginx使用的“其他”php?

    这个的根本原因是加载Magento 2,它给了我这个错误,我认为mcrypt确实没有正确加载:

    Exception #0 (Exception): Notice: Use of undefined constant MCRYPT_BLOWFISH - assumed 'MCRYPT_BLOWFISH' in /[MY DOC ROOT]/magento2/vendor/magento/framework/Encryption/Encryptor.php on line 397
    

    我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

我安装了mcrypt。我怀疑,nginx正在使用不同的php版本(7.0.26),因为新版本(7.0.27)无法收听端口9000,因为它已经在使用中。作为参考,我通过检查php-fpm.log文件找到了这个。

为了解决这个问题,我使用答案here来查找并终止进程。

我发现进程正在运行:

ps aux | grep php

然后杀了他们(有四个人):

kill [PID]

然后开始php:

brew services php70 start

现在我的phpinfo页面显示正在运行7.0.27并安装了mcrypt:

enter image description here

值得注意@zaph的评论 - mcrypt已被弃用。我只是让它运行,所以我可以使用Magento,因为它是一个依赖。