首页 文章

安装Laravel时出错:需要Mcrypt PHP扩展

提问于
浏览
3

我知道在SO上有很多关于这个的问题,但没有一个能解决我的问题 . 我已经检查了他们提到的一切似乎表明mcrypt没问题,除非安装Laravel . 显然我错过了一些东西 .

按照指示安装Laravel时( composer create-project laravel/laravel myproj --prefer-dist ),我在接近安装结束时收到错误"Mcrypt PHP extension required" .

据我所知,mcrypt is 已安装并启用 .

作曲家使用 /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 .

我错过了什么?

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

update: 一个线索 .

如果我编辑 /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不同?

4 回答

  • 0

    Getting Laravel working on Apache

    PHP版本:PHP 5.5.9

    Ubuntu版本:14.04

    经过大量的反复试验和搜索,这就是我发现的 . 我在Windows上有一个工作的laravel项目,我将它复制到ubuntu服务器并开始得到mcrypt错误 .

    getting artisan command working

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

    fixing the browser error

    sudo nano /etc/php5/apache2/php.ini
    

    在php ini的动态编译扩展部分下添加以下行

    extension=mcrypt.so
    

    重启apache服务器,清除laravel缓存,一切正常

  • 1

    根据您发布的内容,看起来composer使用的是与您的MAMP版本不同的PHP安装 . 一种解决方法是使用PHAR版本:

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

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

  • 0

    我能找到的唯一能做的就是编辑 /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,我仍然想知道我的环境是什么,但它的工作原理!

  • 6

    我也遇到过类似的问题,以下命令对我有用 .

    sudo apt-get install php5-mcrypt

    希望它也会起作用 .

相关问题