[英]Error Installing Laravel: Mcrypt PHP extension required
我知道在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
我也可以通過MAMP在phpinfo頁面中看到enabled
mcrypt support
。
我錯過了什么?
編輯:我在.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不同?
讓Laravel在Apache上工作
PHP版本:PHP 5.5.9
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
在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
希望它也會起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.