Laravelを実行しようとしたらエラーが出たので流れと原因・解消法について
久しぶりにLaravelを触ろうとしてコマンドを叩いたらエラーが返されてLaravelを起動できませんでした。
叩いたコマンドは次の通りで
$ php artisan serve
こちらを実行した時に本来であればローカル上のLaravelが起動するところが次のようなエラーメッセージが表示されました。
(私の場合はMAMP上にコードを置いていました)
PHP Fatal error: Uncaught ErrorException: preg_match(): JIT compilation failed: no more memory in 自分がコマンドを実行しようとしたpath/vendor/symfony/console/Terminal.php:75
Stack trace:
#0 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'preg_match(): J...', '/Applications/M...', 75, Array)
#1 自分がコマンドを実行しようとしたpath/vendor/symfony/console/Terminal.php(75): preg_match('/;.(\\d+).rows;....', 'speed 9600 baud...', Array)
#2 自分がコマンドを実行しようとしたpath/vendor/symfony/console/Terminal.php(32): Symfony\Component\Console\Terminal::initDimensions()
#3 自分がコマンドを実行しようとしたpath/vendor/symfony/console/Application.php(770): Symfony\Component\Console\Terminal->getWidth()
#4 自分がコマンドを実行しようとしたpath/vendor/symfony/console/Application.php(743): Symfony\Component\Console\Application->doRenderException(Object(Symfony\Component\Debug\Exception\FatalErrorException), Object(Symfony\Component\Console\Output\ConsoleOutput))
#5 自分がコマンドを実行しようとしたpath/ in 自分がコマンドを実行しようとしたpath/vendor/symfony/console/Terminal.php on line 75
/
原因と解決策
PHP7.3が原因だったようです。
解決するには、PHP7.3のphp.ini(私の場合は/usr/local/etc/php/7.3/php.ini にありました)を開き次の行を
php.ini
;pcre.jit=1
下記のように
php.ini
pcre.jit=0
編集すれば解決できました。
プロジェクトによっては、MAMP上のphp.iniを編集したら起動できるものもあったのですがこちらの設定を編集することで全て起動できるようになりました。
私の場合、Laravelを触る→数ヶ月間を空ける→PHP7.3をインストールする→Laravelを触ろうとしてエラー
という経緯だったのでLaravelに関しても若干うろ覚えだったためコマンドの間違いなのかと最初は少し焦りました。
同じようなエラーが起こった方へ参考になったら幸いです。