Mcrypt PHP extension required. でLaravelが動かなくなった時にやったこと


macOS Sierraにアップデートした影響かわかりませんが、ローカル環境のLaravelが「Mcrypt PHP extension required.」で動かなくなった時にやったことを書きます。

環境

OS:macOS Sierra
PHP: 5.6

原因

PHPとMcryptのバージョンが合っていないのが原因でした。

やったこと

PHPのバージョンの確認

Laravelのpublicディレクトリ内に「phpinfo_test.php」を配置

phpinfo_test.php

<?php
phpinfo();
?>

ブラウザでローカルのphpinfo_test.phpにアクセスしてPHPのバージョンを確認。

mcrypt のバージョンを確認

brewでmcryptをインストールしていたのでターミナルで調べました

ターミナル
brew list

結果
省略 mcrypt php55-mcrypt

phpとmcryptのバージョンがあっていないことがわかりました。
バージョンが合っていた場合、別の原因が考えられます。

現行のmcryptをアンインストール

ターミナル
brew uninstall php55-mcrypt
brew uninstall mcrypt

mcryptをインストール

まずはインストールすべきmcryptを探す

ターミナル
brew search mcrypt

mcryptをインストールします。

ターミナル
brew install homebrew/php/php56-mcrypt

※brewが別バージョンのPHPをインストールしていてインストールできない場合、別バージョンのPHPをアンロックする必要があります。(ターミナルでbrew unlink php55)

php.iniを編集

mcrypt.soの場所を探す

ターミナル
sudo find / -name mcrypt.so

結果
/usr/local/Cellar/php56-mcrypt/5.6.30_4/mcrypt.so

php.iniを編集。(php.iniの場所は環境によって違う場合があります。phpinfo_test.phpで確認できます。)

ターミナル
sudo vim /etc/php.ini 

以下を書き込みして保存
extension=/usr/local/Cellar/php56-mcrypt/5.6.30_4/mcrypt.s

apacheの再起動

ターミナル
sudo apachectl restart

まとめ

以上の対応で再びLaravelが動作しました!