新しいLaravelプロジェクトを作成すると、ブラウザにエラー500が表示されます。ログでこれを見つけました。
PHP解析エラー:構文エラー、予期しない「?」 vendor/laravel/framework/src/Illuminate/Foundation/helpers.phpの233行目
233のコードは次のとおりです。
return app('cache')->get($arguments[0], $arguments[1] ?? null);
しかし、私が知っているように、null合体演算子(??
)はPHP 7.0からサポートされています
私のPHPバージョン:
PHP 7.1.8-2 + ubuntu14.04.1 + deb.sury.org + 4(cli)(built:Aug 4 2017 14:34:05)(NTS)Copyright(c)1997-2017 The PHP Group Zend Engine v3.1.0、著作権(c)1998-2017 Zend Technologies with Zend OPcache v7.1.8-2 + ubuntu14.04.1 + deb.sury.org + 4、著作権(c)1999-2017、Zend Technologies
Laravelバージョン:5.5.0
何が起こったのか誰が知っていますか?
推測する必要がある場合、PPA 7.1.8をCLIのみ(php7-cli)としてインストールしたと思います。それからバージョン情報を取得していますが、libapache2-mod-phpパッケージはまだ14.04メインであり、5.6です。ブラウザでphpinfoをチェックして、バージョンを確認します。また、メインでPHP 7.0を取得するためにUbuntu 16.04への移行を検討することもできます。
UbuntuのLaravel 5.5でもほぼ同じ問題がありました。最終的に、Apacheが使用するphpのバージョンを切り替える解決策 here を見つけました。
そしてそれは動作します
コマンドラインの使用中にこのエラーに遭遇した場合、実行しようとしているものを実行するにはphp 7を使用する必要があるためです。起こったのは、コードがphp7 +でのみ使用可能な演算子を使用しようとしているため、構文エラーが発生していることです。
既にコンピューターにphp 7以降がインストールされている場合は、使用するphpの上位バージョンをコマンドラインでポイントしてみてください。
export PATH=/usr/local/[php-7-folder]/bin/:$PATH
参照用の私のセットアップに基づいて機能した正確な場所は次のとおりです。
export PATH=/usr/local/php5-7.1.4-20170506-100436/bin/:$PATH
実際にブレークを引き起こした演算子は、「null合体演算子」です。詳細については、こちらを参照してください。
Phpバージョンを新しくアップグレードした場合は、ウェブサーバーサービスを再起動するのを忘れる可能性があります。
同じエラーが発生しましたが、問題はComposerを正しくインストールしていなかったことです。
私はWindowsを使用しており、Composer-Setup.exe
を getcomposer.org からインストールしました。PHPの複数のバージョンがインストールされている場合は、実行しているバージョンを選択する必要がありますインストールのこのポイント