【问题标题】:Mcrypt problems after update OS X to El Capitan将 OS X 更新到 El Capitan 后的 Mcrypt 问题
【发布时间】:2016-01-29 13:39:38
【问题描述】:

在将 Yosemite 更新为 El Capitan 后,我遇到了 mcrypt(和 Laravel)的问题。当我运行本地站点(Laravel 框架版本 4.2.17)时,我得到了

需要 Mcrypt PHP 扩展。

这是我的设置:

1) 哪个php

/usr/local/bin/php

2) php --version

PHP 5.6.14 (cli) (built: Oct  3 2015 14:54:13) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans

3) php --ini

Configuration File (php.ini) Path: /usr/local/etc/php/5.6
Loaded Configuration File:         /usr/local/etc/php/5.6/php.ini
Scan for additional .ini files in: /usr/local/etc/php/5.6/conf.d
Additional .ini files parsed:      /usr/local/etc/php/5.6/conf.d/ext-mcrypt.ini,
/usr/local/etc/php/5.6/conf.d/ext-xdebug.ini,
/usr/local/etc/php/5.6/conf.d/redis.ini

4) cat /usr/local/etc/php/5.6/conf.d/ext-mcrypt.ini | grep --color -i mcrypt

[mcrypt]
extension="/usr/local/opt/php56-mcrypt/mcrypt.so"

5) ll /usr/local/opt/php56-mcrypt/

total 112
drwxr-xr-x  5 olga  admin    170 Oct 29 07:31 .
drwxr-xr-x  5 olga  admin    170 Oct 29 07:31 ..
-rw-r--r--  1 olga  admin    373 Oct 29 07:31 INSTALL_RECEIPT.json
-rw-r--r--  1 olga  admin    107 Sep 30 01:35 TODO
-rwxr-xr-x  1 olga  admin  45284 Oct 29 07:31 mcrypt.so

6) php -i | grep --color -i mcrypt

Additional .ini files parsed => /usr/local/etc/php/5.6/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.*
PHP Warning:  Unknown: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in Unknown on line 0
mcrypt
mcrypt support => enabled
mcrypt_filter support => enabled
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no value

7) php -m | grep --color -i mcrypt

mcrypt

8) 回显 $PATH

/Volumes/project1/code/scripts/:/usr/local/mysql:/Applications/Adobe Flash Builder 4.6/sdks/4.5.0/bin:/Volumes/project1/code/tools/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Users/olga/.rvm/bin:~/Applications/arcanist/bin/:/usr/local/Cellar/php56/5.6.14/bin:~/.composer/vendor/phpunit/phpunit:/usr/local/bin:/usr/local/mysql/bin:/Users/olga/.composer/vendor/bin:/opt/apache-maven-3.3.3/bin

9)(来自 $PATH 的 php)/usr/local/Cellar/php56/5.6.14/bin/php --ini

Configuration File (php.ini) Path: /usr/local/etc/php/5.6
Loaded Configuration File:         /usr/local/etc/php/5.6/php.ini
Scan for additional .ini files in: /usr/local/etc/php/5.6/conf.d
Additional .ini files parsed:      /usr/local/etc/php/5.6/conf.d/ext-mcrypt.ini,
/usr/local/etc/php/5.6/conf.d/ext-xdebug.ini,
/usr/local/etc/php/5.6/conf.d/redis.ini

我错过了什么?

提前谢谢你

【问题讨论】:

标签: php macos laravel mcrypt osx-elcapitan


【解决方案1】:

我终于修好了!仍然不知道原因,但是...这是我解决它的方法

1) 将自制 php 放到 PATH 中

export PATH="/usr/local/opt/php56/bin":other_paths

2) 更改 apache(httpd.conf) 中的 php 模块

LoadModule php5_module /usr/local/opt/php56/libexec/apache2/libphp5.so
#LoadModule php5_module libexec/apache2/libphp5.so`

3) 卸载所有版本的 mcrypt 和 phpXX_mcrypt

4) 删除 phpXX_mcrypt ini 文件

5) 重启 apache。确保 mcrypt 不在 php 中(例如php -i | grep --color -i mcrypt

6) 使用 brew 安装 mcrypt 和 phpXX_mcrypt

brew search mcrypt
brew install mcrypt
brew install phpXX_mcrypt

7) 重启apache

希望它会有所帮助:)

【讨论】:

  • 这个!这么多次!经过一整天的搜索以找出为什么通过 Homebrew 设置的带有 PHP/etc 的新 MBP 不会运行 mcrypt 函数(尽管显示模块已加载) - 关键是上面的 LoadModule 更改!
  • 我没有使用 Apache,只是使用了内置的 PHP 服务器,但遇到了同样的问题。安装 El Capitan 后,我的 PHP 版本指向系统 PHP,而不是 Homebrew 的 PHP。通过将我的.zshrc(或.bashrc)中的路径更新为export PATH="$(brew --prefix homebrew/php/php55)/bin:$PATH",已解决此问题。
猜你喜欢
  • 2015-12-30
  • 1970-01-01
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
  • 2016-08-30
  • 2015-12-31
  • 1970-01-01
  • 2016-12-15
相关资源
最近更新 更多