LaravelにはMcrypt PHP拡張機能が必要です


429

私が使用しようとしていますmigrateの関数をLaravel 4OSX。ただし、次のエラーが発生します。

Laravel requires the Mcrypt PHP extension.

私が理解している限り、すでに有効になっています(下の画像を参照)。

何が問題で、どうすれば修正できますか?

ここに画像の説明を入力してください


Laravel 3または4を使用していますか?
Jan P.

情報を投稿に追加しました。Laravel 4です
Patrick Reck、2013年

4
たぶん、この記事はあなたを助ける:stackoverflow.com/questions/14476181/...
月P.

組み込みのPHPを使用していますか、それとも別のバージョンをインストールしましたか?もしそうなら、それをどのようにインストールしましたか?
ジェイミーシェムブリ2013年

2
私は自作を使用してこの簡単な解決策を見つけました:jorble.com/2013/04/install-php-mcrypt-in-macosx
gelviis

回答:


288

Web対応の拡張機能とコマンドライン対応の拡張機能は異なる場合があります。php -m端末で実行し、mcryptがリストされているかどうかを確認します。そうでない場合は、ターミナルからphp.ini実行php --iniして、コマンドラインがファイルをロードする場所を確認してください。

このphp.iniファイルでは、拡張機能を有効にすることができます。

OSX

端末がOSXに同梱されているネイティブPHPを指しているために、OSXで問題が発生していると聞いています。代わりに、bashプロファイルを更新して、PHPへの実際のパスを含める必要があります。このようなもの(私は実際にはOSXを使用していないため、これは100%ではない可能性があります):

export PATH=/usr/local/php5/bin:$PATH

Ubuntu

Ubuntuの以前のバージョン(14.04より前)では、実行sudo apt-get install php5-mcryptしても実際には拡張機能がにインストールされませんmods-available。それをシンボリックリンクする必要があります。

sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini

すべてのUbuntuバージョンでは、インストール後にmodを有効にする必要があります。あなたはそれを行うことができますphp5enmod

sudo php5enmod mcrypt
sudo service apache2 restart

ノート


4
これはUbuntuで私にとってうまくいきました、ありがとう!奇妙なことにsudo apt-get install php5-mcrypt、拡張機能が完全にインストールされないのです。
アリスティデス

Ubuntu 13.10-mcrypt自体もインストールする必要がありました
OndrejGalbavýApr

1
どうやら、それはすでにmcrypt iniをmods-availableにインストールしていたので、php5enmodコマンドを知らなかっただけです。それを使用すると、魅力のように動作します。ありがとう!
imkingdavid 2014

したがって、これについては、php -mに移動するとmcryptがリストされ、どのphpに移動すると/ usr / local / bin / phpと表示されます。私はbrewでmcryptをインストールしようとしましたが、うまくいったようです。しかし、LaravelはまだMcrypt PHP拡張が必要だと言っています。
Marais Rossouw 2014年

1
@imkingdavidと同様に、シンボリックリンクも必要ありませんでした。php5enmodで十分でした。Ubuntu 14.04 LTS
Brett

340

あなたが持っていますかMAMPがインストールされていますか?

which phpターミナルで使用して、使用しているPHPのバージョンを確認します。

MAMPのPHPバージョンでない場合.bash_profileは、ユーザーのホームディレクトリを編集または追加する必要があります。cd ~

.bash_profile以下の行を追加します。

export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH

編集:まず、コマンドcd /Applications/MAMP/bin/phpを使用して、使用しているMAMPのPHPバージョンを確認し、次に上記のPHPバージョンに置き換えます。

次にrestart、ターミナルで、現在使用しているPHPを確認します。

そして、それは今動作しているはずです。


18
Mcryptを入手するためにMAMPは必要ありません。
jackyalcine 2013

48
もちろん、Mcryptを入手するためにMAMPは必要ありません。この回答は、コンピュータに複数のバージョンのPHPがインストールされている人(XAMPPやMAMPなど)向けです。
JustinHo 2013

同様に、AMPPSユーザーの場合:export PATH=/Applications/AMPPS/php-5.4/bin:$PATH... 5.4.xxで撮影していると仮定すると、そこには5.3と5.5もあります。
Joel Mellon、

6
誰もがMAMPを使用していません。他の人にも答えがありますか。
TuGordoBello 2015年

2
私が指摘したように、これcd ~は非常に重要です。.bash_profileそこに存在するを開く必要があります。また、新しいbash変数が読み込まれるようにターミナルを閉じて再度開く必要があることも重要です。変更が適用されたことを確認するためにどのphpを実行するかを確認してください。
ワイヤード00 2015年

142

XAMPP 1.7.3とMacを使用している方へ

  1. ターミナルに行く
  2. 入る which php
    • と表示されている場合は/usr/bin/php、3に進みます。
  3. 入力するsudo nano ~/.bash_profile(またはsudo vim ~/.bash_profile使用方法を知っている場合)
  4. 次に、これを貼り付けます export PATH="/Applications/XAMPP/xamppfiles/bin:$PATH"
  5. Ctrl+O次に、保存Ctrl+Xして終了します。
  6. タイプ cd ~
  7. タイプ . .bash_profile
  8. 端末を再起動します。
  9. と入力しwhich phpます。正しくできていれば、#4のパスと同じになります。

mcryptエラーの理由は、Macがそのネイティブphpを使用しているためです。xamppが持っているものに変更する必要があります。

PS私はMacユーザーのLaravel 4にMAMPを使用することをお勧めします。この問題はphpファイルの情報エラーと一緒に問題なく解決され、phpバージョンのxamppは非常に古くなっています。


12
また良い答えです!MAMPのためにこれをする必要があります:"export PATH=/Applications/MAMP/bin/php/php5.4.10/bin:$PATH"
Foxinni

3
〜/ .bash_profileがない場合は、〜/ .bashrcをチェックしてみてください
Ironwind

6
.bash_profileをすぐに実行します。通常、これらのbashを実行するには再起動する必要があります
Bryan P

問題が発生したため、私の端末ではsudoも認識されませんでした
Sunny R Gupta

lamppでも動作します。パスをexport PATH="/opt/lampp/bin:$PATH"
JTC

87

OSX(homebrewがインストールされている)上のMAMPまたはXAMPP以外のユーザーの場合:

brew install homebrew/php/php56-mcrypt

乾杯!


1
これがネイティブOSX PHPでは機能しないのではないかと心配していましたが、インストールしただけで、PATHなどをいじる必要はありませんでした。うまくいきます。良いですね。
Lauren

3
このスレッドの主要な回答にこの回答を追加して、より包括的なリソースにすることは素晴らしいことです。ローレンが言ったように、迅速なアドバイスをありがとう、これは本当に問題を修正します。
ブライアンレイナー2014

4
これは実際には$ brew install homebrew/php/php55-mcrypt、そうでなければ得られますError: No available formula with the name "php55-mcrypt"
コナー・リーチ

47

Ubuntuを使用して、ちょうど

sudo php5enmod mcrypt

私のためにトリックをしました。CLIからのみPHPを使用する必要があるため、Apacheを再起動する必要はありません。


37

Ubuntuの場合(PHP-FPM、Nginx)

sudo apt-get install php5-mcrypt

php5-mcryptをインストールした後

mods-availableでiniファイルへのシンボリックリンクを作成する必要があります。

sudo ln -s /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/mcrypt.ini

有効化:

sudo php5enmod mcrypt

php5-fpmを再起動します。

sudo service php5-fpm restart

もっと詳しく


私が走りsudo aptitude -y install php5-mcrypt、続いてsudo php5enmod mcryptsudo service php5-fpm restart。(ソフトリンクの手順は省略しました)。それは働いた:)
Aditya MP

26

LaravelをApacheで動作させる

PHPバージョン:PHP 5.5.9

Ubuntuバージョン:14.04

私はWindows上で作業中のlaravelプロジェクトを持っていました。ubuntuサーバーにコピーしたときに、mcryptエラーが発生し始めました。何時間もの試行錯誤の後

職人コマンドを機能させる

(artisanコマンドラインツールの使用中に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

ブラウザのエラーを修正する

(ローカルのlaravelインデックスページにアクセスするときにブラウザーでmcryptエラーが発生している場合)

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

php iniの動的にコンパイルされた拡張機能セクションの下に次の行を追加します

extension=mcrypt.so

Apacheサーバーを再起動し、Laravelキャッシュとすべての機能を削除します


PHP Dockerイメージで作業している場合は、実行する必要もありますdocker-php-ext-install mcrypt。画像でテスト済み:php:5.6.31-apache。それがなければ、表示されphp -mませんmcrypt
Ewa

19

Ubuntu 14.04でのphp-fpmのインストールでは、以下がうまくいきました:

sudo apt-get install php5-mcrypt

これはmcrypt.ini内部にファイルを作成します/etc/php5/mods-available/

その後

sudo php5enmod mcrypt

にシンボリックリンクを作成します: /etc/php5/fpm/conf.d/

php-fpmサービスを再起動するだけです sudo service php5-fpm restart


19

ubuntuでは、他のユーザーが機能していない場合は、次の手順を試してください。

  1. cd ~
  2. sudo apt-get remove php5-mcrypt
  3. sudo apt-get install php5-mcrypt
  4. sudo php5enmod mcrypt
  5. sudo service apache2 restart

お役に立てれば幸いです。よろしくお願いします!


19

または、以下を使用します。

sudo apt-get install php5-mcrypt

これが標準のPHPインストールで機能するかどうかはわかりません-次php 5.5.7のパッケージを使用してインストールしました:

sudo add-apt-repository ppa:ondrej/php5 
sudo apt-get update

16

私のOSはYosemiteです。

この問題は、構成パスを見つけることで解決します。

php --ini

出力例:

Configuration File (php.ini) Path: /usr/local/etc/php/5.5
Loaded Configuration File:         /usr/local/etc/php/5.5/php.ini
Scan for additional .ini files in: /usr/local/etc/php/5.5/conf.d
Additional .ini files parsed:      (none)

次のステップ:

  1. php55 iniファイルの名前変更または削除
  2. シンボリックリンクを作成する
  3. Apacheサーバーを再起動します

コマンド:

mv /usr/local/etc/php/5.5/php.ini /usr/local/etc/php/5.5/php.ini.default
ln -s /etc/php.ini /usr/local/etc/php/5.5/php.ini
sudo apachectl restart

次に、phpモジュールを次の方法で確認できます。

php -m

16

余計に、

yum install php-mcrypt
service httpd restart
chown -R apache:apache apppath

多分あなたはレミレポをインストールする必要があります


15

これは私のLinux Mintローカル環境で私のためにそれを解決しました/ubuntu/350942/cannot-get-mcrypt-for-php5

次のフォルダー/etc/php5/apache2/conf.d/mcrypt.iniおよび/etc/php5/cli/conf.dにある/etc/php5/conf.d/mcrypt.iniファイルへのシンボリックリンクを作成する必要がありました。 /mcrypt.ini


14

オールインワン環境が必要です。MAMP、XAMPP、またはその他のツールを使用できます。これらのツールの1つをインストールした後、.bash_profileを編集(作成)する必要があります(bashを使用する場合)。

または、シンプルでプロフェッショナルな場合でも、Laravel Homesteadを使用できます。

ここに公式ドキュメントへのリンクがあります:http : //laravel.com/docs/5.0/homestead

また、ジェフリーには無料のチュートリアルがあります:https : //laracasts.com/series/laravel-5-fundamentals/episodes/2

以下のすべてのツールをプレインストールするので、ホームステッドを使用することをお勧めします。

  • Ubuntu 14.04
  • PHP 5.6
  • HHVM
  • Nginx
  • MySQL
  • Postgres
  • ノード(Bower、Grunt、Gulpを使用)
  • Redis
  • Memcached
  • 豆の木
  • ララヴェル特使
  • ファブリック+ HipChat拡張

10

@JetLaggyを拡張する:

MAMPディレクトリで.bash_profileを何度も変更した後、MAMP phpディレクトリのファイル権限を変更し、適切なディレクトリを表示するための「どのphp」を取得することができました。問題は、「php -v」などの他の機能が動作しないことでした。

そこで、MAMPを更新しました。 http://documentation.mamp.info/en/mamp/installation/updating-mamp

これは私の特定のセットアップのためのトリックをしました。更新されたバージョンのPHPを反映するようにPATHを調整する必要がありましたが、変更するとすべてが機能しました!


9

OS Xの場合

MAMPの使用

which phpターミナルでコマンドを入力して、使用しているPHPのバージョンを確認します。MAMPのPHPバージョンではない場合、Bashで使用される$ PATH変数を更新する必要があります。

最初に、コマンド「cd / Applications / MAMP / bin / php」を使用して、MAMPからのphpのバージョンを確認し、バージョンをメモします(例:php5.6.7)。

バージョンがわかったら、~/.bash_profileファイル(つまり.bash_profile、ホームディレクトリにあるファイル)を編集し、エクスポート行を追加します。

    export PATH=/Applications/MAMP/bin/php/php5.6.7/bin:$PATH

php5.6.7をMAMPで選択したPHPのバージョンに置き換えてください。

ファイルが保存されたら、ターミナルを閉じてからもう一度開いてください。これが完了すると、MAMPに付属するPHPを使用することになります。


内部に置く必要がある行を簡単に見つける方法の1つ.bash_profileは、ターミナル内で次のコマンドを実行することです。

    echo export PATH=`cat /Applications/MAMP/conf/apache/httpd.conf \
         | grep php | grep -i LoadModule | head -n1 \
         | sed -e 's/^[^\/]*\/\(.*\)\/mod.*/\/\1/'`/bin:\$PATH

これらの3行を端末にコピーして貼り付けると、MAMPコントロールパネル内で選択されたPHPバージョンが正しく出力されます。

Homebrew / MacPortsの使用

あなたpathが含むもの/usr/local/bin/(Homebrew)または/opt/local/binこれら2つのパッケージマネージャーのいずれかに付属しているPHPを使用している場合(MacPorts)。

MacPortsでPHPパスを確認する

次のコマンドでMacPortsを使用して、PHPの正確な場所を見つけることができます。

port contents php70 | grep bin/php

交換する必要があることに注意してください php70あなたがインストールしたPHPのバージョンで。

Homebrew-phpでPHPパスを確認する

Homebrew-php(https://github.com/Homebrew/homebrew-php)は、さまざまなバージョンのPHPを持つタップです。

次のコマンドでHomebrewを使用して、PHPの正確な場所を見つけることができます。

brew --prefix homebrew/php/php56

php56あなたがインストールしたPHPのバージョンで置き換える必要があることに注意してください。


6

Ubuntu 14.04

sudo apt-get install php5-mcrypt
sudo php5enmod mcrypt

Ubuntu 16.04

sudo apt-get install php-mcrypt
sudo phpenmod mcrypt

Ubuntu 18.04

sudo apt install php7.0-mcrypt
sudo phpenmod mcrypt

または

sudo apt install php7.2-mcrypt
sudo phpenmod mcrypt

5

Zシェルを使用している場合は、次の手順を実行します。

  1. オープンターミナル
  2. sudo nano ~/.zshrc
  3. これを貼り付けます。 export PATH=/Applications/MAMP/bin/php/php5.6.10/bin:$PATH
  4. セーブ
  5. 走る source ~/.zshrc
  6. 実行 which php -MAMP 5.6.10パスを取得する必要があります

5.6.10は、MAMPで設定したPHPのバージョンです。


3

OSXとbrew

$ brew install mcrypt php70-mcrypt

私はPHP 7.0.xを実行しているので、別のバージョンを使用している場合は、「php70」を自分のバージョンに変更してください。
他の回答で述べたように、あなたはあなたのphpバージョンをで見ることができます$ php -v


3

今日もここに来る人のために:

Laravelはmcryptもはや拡張を必要としませんmcryptlibmcryptの最後の更新は2007年でした。Laravel4.2も廃止され、サポートされなくなりました。最良の(=安全な)ソリューションは、Laravel> 5.1に更新することです(Laravel 5.2より前のLTSはありません)。

Mcryptは2015年6月にLaravelから削除されました:https : //github.com/laravel/framework/pull/9041


ホームステッドプロビジョニングを実行して問題を修正しました

0

sudo php install mcrypt

sudo php5enmod mcrypt


1
あなたのコメントは技術的には正しいかもしれませんが、ここではStackOverflowであなたの回答に対するいくつかの説明を含めるよう努めています。さらに、OPはすでにインストールされているようmcryptですが、これがOPの問題を修正すると信じている理由を詳しく説明していただけますか?
milo526

0

あなたのphpバージョンに基づくubuntu 14.04では:5.6、7.0、7.1、7.2、7.3

sudo apt-get install php {version} -mcrypt

sudo apt-get install php7.1-mcrypt

sudo phpenmod mcrypt 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.