【发布时间】:2014-09-20 07:36:23
【问题描述】:
我知道在 SO 上有很多关于此的问题,但没有一个能解决我的问题。我已经检查了他们提到的所有内容似乎都表明 mcrypt 没问题,除了安装 Laravel 时。显然我错过了一些东西。
按照指示 (composer create-project laravel/laravel myproj --prefer-dist) 安装 Laravel 时,我在安装快要结束时收到错误“需要 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 support enabled。
我错过了什么?
编辑:我在.bash_profile 中有export PATH="/Applications/MAMP/bin/php/php5.5.10/bin:$PATH",可以通过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 不一样?
【问题讨论】:
-
可能有点远,但
mcrypt.so文件是否在配置的extensions 目录中? -
检查laravel.io/forum/…。 Composer 可能仍在使用系统 PHP 二进制文件(由于
/usr/bin/env php) -
是的,是的。我可以在 ini 中指定的目录中看到
mcrypt.so,并且我的路径上有 MAMP php bin 文件夹(请参阅编辑) -
等一下...您编辑上方的所有内容都使用
/Applications/MAMP/bin/php/php5.5.10,但您的PATH包含/Applications/MAMP/bin/php/php5.4.19。我会说那是你的问题。最近升级了 MAMP? -
我完全不知所措。这就是我在 mac 上使用 Vagrant 的原因
标签: php laravel composer-php mamp mcrypt