【问题标题】:Mcrypt PHP extension required on Mac OS X MojaveMac OS X Mojave 需要 Mcrypt PHP 扩展
【发布时间】:2019-05-30 09:18:57
【问题描述】:

我刚刚更新到 Mac OS X Mojave。我的本地站点现在停止加载。

我一直在得到

需要 Mcrypt PHP 扩展。

我试过了

brew update
brew upgrade
brew tap homebrew/dupes
brew tap josegonzalez/homebrew-php
brew install php54-mcrypt
php --version // To Test your php 

我明白了

错误:php54-mcrypt:无法加载此类文件 -- /usr/local/opt/php54-mcrypt/Abstract/abstract-php-extension

我尝试重新加载我的网站

我还是明白了

需要 Mcrypt PHP 扩展。


我的设置详情

php --version,我明白了

PHP 7.1.4 (cli) (built: May  6 2017 10:02:00) ( NTS )                            
Copyright (c) 1997-2017 The PHP Group                                            
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies                    
    with Zend OPcache v7.1.4, Copyright (c) 1999-2017, by Zend Technologies      

哪个php,我得到了

/usr/local/php5/bin/php                                                          

php -i | grep php.ini,我得到了

Configuration File (php.ini) Path => /usr/local/php5/lib                        
Loaded Configuration File => /usr/local/php5/lib/php.ini 

printenv,我得到了

TERM=xterm-256color
SHELL=/bin/bash
CLICOLOR=1
TMPDIR=/var/folders/54/y_678c6n7q7_pgk1v5lkzwnr0000gp/T/
SSH_CLIENT=10.20.100.88 49732 22
OLDPWD=/Users/bheng
SSH_TTY=/dev/ttys016
USER=bheng
LSCOLORS=ExFxBxDxCxegedabagacad
MAIL=/var/mail/bheng
PATH=/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/opt/curl/bin:/Applications/Postgres.app/Contents/Versions/latest/bin:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/local/sbin:/usr/local/php5/bin:/Users/bheng/.composer/vendor/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/pgsql/bin:/opt/X11/bin:/Applications/Wireshark.app/Contents/MacOS:/usr/local/mysql/bin
PWD=/Users/bheng/Desktop
SHLVL=1
HOME=/Users/bheng
GREP_OPTIONS=--color=always
LOGNAME=bheng

如何进一步调试?

SSH_CONNECTION=10.20.100.88 49732 10.20.100.88 22
_=/usr/bin/printenv

当我打开 php.info 时,我看到了这个

【问题讨论】:

  • 我对 brew 不太熟悉,但 php54-mcrypt 似乎意味着 php 5.4 的 mcrypt 但你有 php 7.1
  • 你知道7.1怎么安装吗?
  • 我猜是brew install php71-mcrypt
  • 我试过了,我得到了这个???????? i.imgur.com/VZMtQQP.png
  • brew --version 返回什么?

标签: laravel laravel-5 mcrypt macos-mojave php-ini


【解决方案1】:

Homebrew 最近对 PHP 及其扩展做了一些更改。在您必须点击 homebrew/php 并使用 brew install php71 安装特定 PHP 版本和使用 brew install php71-mcrypt 安装模块之前。现在你必须使用 php@7.1 并使用 PECL 自己构建扩展。

既然你有这么多不同的 PHP 版本,我建议你把它们都去掉。以下步骤将从您的系统中删除所有旧 PHP 版本:

# Will show you any php packages you've got. make not of that!
brew list | grep php

# Will uninstall any php packages you may have
brew list | grep php | while read x; do brew uninstall --force $x; done

# You may need to run this too
rm -rf /usr/local/Cellar/php

# Clean up Launch Agents
rm ~/Library/LaunchAgents/homebrew.mxcl.php*
sudo rm /Library/LaunchDaemons/homebrew.mxcl.php*
brew untap homebrew/php
brew cleanup
brew update
brew doctor # just to make sure you're all clean
ps ax | grep php
# if some PHP daemons are still runing, reboot.

重启后就可以用新的方式安装PHP了:

brew install php // This installs the latest version. If you need PHP7.1 use brew install php@7.1

检查这是否有效:

php --version

以下重要路径是:

  • /usr/local/opt/php/lib/httpd/modules/libphp7.so — 您的 apache 模块。
  • /usr/local/bin/php — 你的命令行 PHP。
  • /usr/local/sbin/php-fpm — 您的 PHP-FPM 二进制文件。

要安装扩展,你必须使用 pecl:

pecl install mcrypt // Install all other extensions this way 

扩展将安装到/usr/local/lib/php/pecl/20170718/

如果您使用 Apache,则必须加载 Apache 模块。编辑/usr/local/etc/httpd/httpd.conf 并搜索加载所有模块的部分。在该部分的末尾添加这一行:

LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so

重新启动您的 Apache 服务器并检查是否使用了正确的 PHP 版本。

【讨论】:

    猜你喜欢
    • 2016-02-02
    • 2010-11-29
    • 2014-09-26
    • 2017-05-11
    • 2017-09-15
    相关资源
    最近更新 更多