【问题标题】:Undefined function mcrypt after update OSX to "El Capitan"将 OSX 更新为“El Capitan”后未定义的函数 mcrypt
【发布时间】:2015-12-31 05:03:51
【问题描述】:

在将“Yosemite”更新为“El Capitan”后,我遇到了 mcrypt 扩展问题。

致命错误:在第 68 行的 /Users/Pilipe/Sites/prestashop-test/classes/Rijndael.php 中调用未定义函数 mcrypt_decrypt()

在我的 php.ini 中,我添加了这一行:

extension="/usr/local/Cellar/php56-mcrypt/5.6.13/mcrypt.so"

当我启动这个命令行时:

php -i | grep 'mcrypt'

我有:

已解析的其他 .ini 文件 => /usr/local/etc/php/5.6/conf.d/ext-mcrypt.ini
注册流过滤器 => zlib., bzip2., convert.iconv., string.rot13, string.toupper, string.tolower, string.strip_tags, convert., 消费, dechunk, mcrypt., mdecrypt.
PHP 警告:未知:依赖系统的时区设置是不安全的。您需要使用 date.timezone 设置或 date_default_timezone_set() 函数。如果您使用了这些方法中的任何一种,但仍然收到此警告,您很可能拼错了时区标识符。我们现在选择时区“UTC”,但请设置 date.timezone 以选择您的时区。在第 0 行的未知中
mcrypt
mcrypt 支持 => 已启用
mcrypt_filter 支持 => 启用
mcrypt.algorithms_dir => 没有价值 => 没有价值
mcrypt.modes_dir => 没有价值 => 没有价值
密码 => /usr/local/Cellar/php56-mcrypt/5.6.13
_SERVER["PWD"] => /usr/local/Cellar/php56-mcrypt/5.6.13

命令 php -v :

PHP 5.6.13 (cli)(构建时间:2015 年 10 月 2 日 23:07:16)
版权所有 (c) 1997-2015 PHP 集团
Zend Engine v2.6.0,版权所有 (c) 1998-2015 Zend Technologies

我安装了 mcrypt:

brew 安装 php56-mcrypt

我做到了:

酿造链接 php56-mcrypt

为什么 mcrypt 不起作用?

提前谢谢你。
真诚的菲利普。

【问题讨论】:

标签: php mcrypt osx-elcapitan


【解决方案1】:

我能够通过卸载 Homebrew、重新安装 Homebrew 然后安装 php 5.6 mcrypt 包来解决此问题。这种方法相对于 Pilipe 的解决方案的优势在于它不需要禁用新的系统完整性保护 (SIP)。

// Uninstall Homebrew
[sudo] rm -rf /usr/local/Cellar /usr/local/.git && brew cleanup

// Reinstall Homebrea
ruby -e "$(curl -fsSL    https://raw.githubusercontent.com/Homebrew/install/master/install)"

// Install mcrypt
brew install php53-mcrypt

// Test mcrypt
mcrypt -v
// should result in 
// Mcrypt v.0.9.9 (i386-apple-darwin15.0.0)
// Linked against libmcrypt v.2.5.8
// Copyright (C) 1998-2002 Nikos Mavroyanopoulos (nmav@gnutls.org)

【讨论】:

    猜你喜欢
    • 2016-01-29
    • 2016-06-05
    • 2016-01-16
    • 2016-07-05
    • 2015-12-30
    • 2016-03-11
    • 2014-12-17
    • 2015-12-31
    • 2015-12-29
    相关资源
    最近更新 更多