Mac OS X 需要 Mcrypt PHP 扩展

Posted

技术标签:

【中文标题】Mac OS X 需要 Mcrypt PHP 扩展【英文标题】:Mcrypt PHP extension required on Mac OS X 【发布时间】:2015-06-02 12:16:43 【问题描述】:

我一直收到这个错误

需要 Mcrypt PHP 扩展

在我运行 composer update 之后的底部:

由于我使用的是 Mac,我尝试过运行:

brew search mcrypt brew install php56-mcrypt

我仍然收到相同的错误消息。

【问题讨论】:

确定 mcrypt 扩展尚未安装,只是在 php 配置中尚未激活? 我不确定安装是否通过,因为我仍然收到错误“需要 Mcrypt PHP 扩展”。运行作曲家更新后在底部。 好吧,看看你的文件系统中安装扩展的地方...... 最好不要使用mcrypt,它已经废弃了近十年了。因此,它已被弃用,并将在 PHP 7.2 中从核心中删除并进入 PECL。它不支持标准 PKCS#7 (née PKCS#5) 填充,仅支持甚至不能用于二进制数据的非标准空填充。 mcrypt 有许多出色的 bugs 可以追溯到 2003 年。请考虑使用 defuse 或 RNCryptor,它们提供了完整的解决方案,正在维护并且是正确的。 【参考方案1】:

步骤

我通过运行以下命令解决了这个问题

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

结果

不再有 Mcrypt 警告!

Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating autoload files
Generating optimized class loader

【讨论】:

brew install homebrew/php/php55-mcrypt 也可以 是的,正如@BingHan 所说的那样,只要选择好的 php 版本就可以了! 错误:自制/欺骗已被弃用。这个水龙头现在是空的,因为它的所有公式都被迁移了。请更新您的答案。 brew tap homebrew/dupes 错误:homebrew/dupes 已被弃用。此水龙头现在是空的,因为它的所有公式都已迁移。【参考方案2】:

更新后酿造:

brew update
brew upgrade
brew tap homebrew/dupes
brew tap josegonzalez/homebrew-php

如果你已经安装了php5.6(或更高版本),你可以使用下面的命令查看brew有哪些版本:

$ brew search mcrypt
homebrew/php/php53-mcrypt     homebrew/php/php55-mcrypt         homebrew/php/php70-mcrypt     mcrypt
homebrew/php/php54-mcrypt     homebrew/php/php56-mcrypt     homebrew/php/php71-mcrypt

就我而言,我使用的是 php7.0:

$ brew install php70-mcrypt

【讨论】:

brew search mcrypt 很重要,因为它很可能会返回您需要的内容。就我而言(我假设他们已经整合了版本控制),我的搜索结果中出现了“libtomcrypt”、“mcrypt”、“scrypt”、“ccrypt”和“bycrypt”。然后我只运行了 brew install mcrypt ,一切都解决了。很好的答案@CharlieJade【参考方案3】:

ma​​cOS High Sierra 上,我执行了以下步骤:

1- 搜索包:

brew search mcrypt

结果:

==> 正在搜索本地水龙头... homebrew/php/php71-mcrypt mcrypt homebrew/php/php53-mcrypt 自制/php/php54-mcrypt 自制/php/php55-mcrypt 自制/php/php56-mcrypt 自制/php/php70-mcrypt libtomcrypt

2- 搜索我的 php 版本以了解我需要安装什么:

php --version

结果:

PHP 7.1.7 (cli) (build: Jul 15 2017 18:08:09) (NTS) 版权所有 (c) 1997-2017 PHP Group Zend Engine v3.1.0,版权所有 (c) 1998-2017 Zend 技术

3- 安装正确的包,对我来说是 7.1.7 => homebrew/php/php71-mcrypt

brew install homebrew/php/php71-mcrypt

4- 找到查找“mcrypt.so”扩展文件

find /usr/ -type f -name "mcrypt.so"

结果:

发现: /usr//local/Cellar/php71-mcrypt/7.1.13_19/mcrypt.so

5- 搜索 php.ini

php -i | grep 'Configuration File'

结果(如果存在):

配置文件 (php.ini) 路径 => /etc 加载的配置文件 => /etc/php.ini

6- 在 /etc/php.ini 的末尾添加下一行(请参阅正确路径的最后一步)扩展 mcrypt.so

 extension=/usr/local/Cellar/php71-mcrypt/7.1.13_19/mcrypt.so

完成,你现在可以执行你的命令了。

【讨论】:

我正在使用 XAMPP,它在这里不起作用。还有什么办法吗? 错误:homebrew/php 已被弃用。此水龙头现在是空的,因为它的所有公式都已迁移。【参考方案4】:

您需要添加该行

 extension=mcrypt.so

在您的 phi.ini 文件中负责 CLI PHP 版本。 要找到它的位置,请运行:

php -i | grep 'Configuration File'

【讨论】:

我已经在我的php.ini 中找到了它,我检查了它。还有其他建议吗? 当我运行 php -i | grep 'Configuration File' 时,我看到:配置文件 (php.ini) 路径 => /etc 加载的配置文件 => (none) 试试这个:运行find /usr/lib/php/extensions -type f -name "mcrypt.so" 这应该会给你扩展所在的路径。然后,在 php.ini 的 extension=mcrypt.so 之前添加指令 extension_dir=/usr/lib/php./....../mcrypt.so 当我运行 find /usr/lib/php/extensions -type f -name "mcrypt.so" 时,我没有任何结果。 @ihue 你找到解决方案了吗?【参考方案5】:

在我的 Mac 上使用 XAMPP,所以我必须安装 php,然后使用 pecl 编译 mcrypt,然后我将 mcrypt.so 复制到 XAMPP。

可用版本的实际列表是:http://pecl.php.net/package/mcrypt

命令是:

echo Install php...
brew install php
/usr/local/opt/php/bin/php -v

echo Correction of "error Connection to `ssl://pecl.php.net:443' failed"...
wget http://curl.haxx.se/ca/cacert.pem
sudo cp cacert.pem /private/etc/ssl/cert.pem
sudo mv cacert.pem /Applications/XAMPP/xamppfiles/share/openssl/cert.pem
/usr/local/opt/php/bin/pecl list-all

echo Compile and Install mcrypt.so...
sudo /usr/local/opt/php/bin/pecl install mcrypt-1.0.1

pecl构建过程的最后一条信息是:

Build process completed successfully
Installing '/usr/local/Cellar/php/7.2.7/pecl/20170718/mcrypt.so'
install ok: channel://pecl.php.net/mcrypt-1.0.1
Extension mcrypt enabled in php.ini

基于构建过程的路径,我将编译好的mcrypt.so复制到XAMPP并在php.ini上启用扩展:

sudo cp /usr/local/Cellar/php/7.2.7/pecl/20170718/mcrypt.so /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20170718/mcrypt.so 
echo 'extension=mcrypt.so' >> /Applications/XAMPP/xamppfiles/etc/php.ini

检查是否有效:

/Applications/XAMPP/bin/php -i | grep "mcrypt"

结果必须是:

mcrypt
mcrypt support => enabled
mcrypt_filter support => enabled
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no value

记得重新启动 Apache 以使用浏览器查看它的工作情况。

也许它可以帮助某人,我赢得了一个赞许。谢谢

【讨论】:

以上是关于Mac OS X 需要 Mcrypt PHP 扩展的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac OS X 10.5.8 上为 PHP 安装 Mcrypt 扩展

在 Mac OS X Yosemite 10.10 上使用 Mamp Pro 进行 Mcrypt

sh 使用自制软件将Mac Os X的php版本更新为php 7.1。包括curl和mcrypt

sh 使用自制软件将Mac Os X的php版本更新为php 7.1。包括curl和mcrypt

sh 使用自制软件将Mac Os X的php版本更新为php 7.1。包括curl和mcrypt

sh 使用自制软件将Mac Os X的php版本更新为php 7.1。包括curl和mcrypt