我知道在 SO 上有很多关于此的问题,但没有一个能解决我的问题。我已经检查了他们提到的所有内容似乎表明 mcrypt 没问题,除了安装 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 $*%
我的 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
我可以看到 mcrypt support
enabled
也通过 MAMP 在 phpinfo 页面中。
我错过了什么?
编辑:我有 export PATH="/Applications/MAMP/bin/php/php5.5.10/bin:$PATH"
在 .bash_profile
可以用echo $PATH
确认和 which php
更新一个线索。
如果我编辑 /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 命令时,我都会收到错误消息。但是在全新安装时没有错误消息。在这一步之后我得到了 artisan 命令工作
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缓存和一切正常
关于php - 安装 Laravel 错误 : Mcrypt PHP extension required,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25006701/