簡體   English   中英

安裝Laravel時出錯:需要Mcrypt PHP擴展

[英]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 $PATHwhich 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM