安装Laravel错误:需要Mcrypt PHP扩展


Error Installing Laravel: Mcrypt PHP extension required

我知道在SO上有很多关于这个的问题,但是没有一个解决我的问题。我检查了他们提到的所有内容,除了安装Laravel之外,似乎都表明加密是可以的。很明显我漏掉了什么。

当安装Laravel指导(composer create-project 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 $*%   

我的路径是5.5.10从MAMP

$ 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 support enabled

我错过了什么?

edit:我在.bash_profile中有export PATH="/Applications/MAMP/bin/php/php5.5.10/bin:$PATH",可以与echo $PATHwhich php确认

update: a clue.

如果我编辑/usr/local/bin/composer为:

#!/usr/bin/env bash
echo $PATH
/usr/bin/env php --ini

并运行composer,我得到

/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上运行

PHP版本:PHP 5.5.9

Ubuntu版本:14.04

经过大量的试错和搜索,这是我的发现。我在windows上有一个工作的laravel项目,我把它复制到ubuntu服务器上,然后开始出现McRypt错误。

让artisan命令工作

我做了很多尝试和错误,所以每次我运行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

在PHP ini

的动态编译扩展部分添加以下行
extension=mcrypt.so

重新启动apache服务器,清除laravel缓存和所有工作

从你发布的内容来看,composer使用的是不同于MAMP版本的PHP安装。一种解决方法是使用PHAR版本:

wget https://getcomposer.org/composer.phar
php composer.phar create-project laravel/laravel myproj --prefer-dist

如果您的CLI php将mcrypt注册为已安装的模块,这将解决您的安装问题。

我唯一能找到的是编辑/usr/local/bin/composer并设置PATH在那里,像这样:

#!/usr/bin/env bash
export PATH="/Applications/MAMP/bin/php/php5.5.10/bin:$PATH"
/usr/bin/env php -d allow_url_fopen=On -d detect_unicode=Off /usr/local/Cellar/composer/1.0.0-alpha8/libexec/composer.phar $*

这是hacky和我仍然想知道怎么回事,我的嫉妒,但它工作!

我也遇到过类似的问题,下面的命令对我有效

sudo apt-get install php5-mcrypt