我知道在SO上有很多关于这个的问题,但没有一个能解决我的问题.我已经检查了他们提到的一切似乎表明mcrypt没问题,除非安装Laravel.显然我错过了一些东西.
当按照指示安装Laravel时(作曲家创建项目laravel / laravel myproj –prefer-dist)我在安装结束时看到错误“需要Mcrypt PHP扩展”.
据我所知,mcrypt已安装并启用.
Composer使用/usr/bin/env PHP
$which composer /usr/local/bin/composer $cat /usr/local/bin/composer #!/usr/bin/env bash /usr/bin/env PHP -d allow_url_fopen=On -d detect_unicode=Off /usr/local/Cellar/composer/1.0.0-alpha8/libexec/composer.phar $*%
我的PATH上的PHP是来自MAMP的5.5.10
$PHP --version PHP 5.5.10 (cli) (built: Apr 10 2014 17:49:22) $which PHP /Applications/MAMP/bin/PHP/PHP5.5.10/bin/PHP
Mcrypt已安装并启用
$PHP -m | grep mcrypt mcrypt $PHP --info | grep mcrypt mcrypt mcrypt support => enabled mcrypt_filter support => enabled mcrypt.algorithms_dir => no value => no value mcrypt.modes_dir => no value => no value $PHP --ini Configuration File (PHP.ini) Path: /Applications/MAMP/bin/PHP/PHP5.5.10/conf Loaded Configuration File: /Applications/MAMP/bin/PHP/PHP5.5.10/conf/PHP.ini Scan for additional .ini files in: (none) Additional .ini files parsed: (none) $grep mcrypt /Applications/MAMP/bin/PHP/PHP5.5.10/conf/PHP.ini extension=mcrypt.so
我也可以通过MAMP在PHPinfo页面中看到启用mcrypt支持.
我错过了什么?
编辑:我在.bash_profile中导出PATH =“/ Applications / MAMP / bin / PHP / PHP5.5.10 / bin:$PATH”并且可以用echo $PATH和哪个PHP确认
更新:一个线索.
如果我编辑/usr/local/bin / composer是:
#!/usr/bin/env bash echo $PATH /usr/bin/env PHP --ini
并运行作曲家
/usr/bin:/bin:/usr/sbin:/sbin Configuration File (PHP.ini) Path: /etc Loaded Configuration File: (none) Scan for additional .ini files in: /Library/Server/Web/Config/PHP Additional .ini files parsed: (none)
为什么PATH不同?
解决方法
让Laravel在Apache上工作
Ubuntu版本:14.04
经过大量的反复试验和搜索,这就是我发现的.我在Windows上有一个工作的laravel项目,我将它复制到ubuntu服务器并开始得到mcrypt错误.
让工匠指挥工作
我做了很多试验和错误所以每次我运行PHP5enmod命令之前,我有错误消息.但在全新安装时没有错误消息.在这一步之后我得到了工匠指挥工作
sudo rm /etc/PHP5/mods-available/mcrypt.ini sudo apt-get purge PHP5-mcrypt sudo apt-get install mcrypt sudo apt-get install PHP5-mcrypt sudo PHP5enmod mcrypt
修复浏览器错误
sudo nano /etc/PHP5/apache2/PHP.ini
extension=mcrypt.so
重启apache服务器,清除laravel缓存,一切正常