web-dev-qa-db-ja.com

PHP解析エラー:構文エラー、予期しない '?' helpers.php 233

新しい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

何が起こったのか誰が知っていますか?

29
cuimingda

推測する必要がある場合、PPA 7.1.8をCLIのみ(php7-cli)としてインストールしたと思います。それからバージョン情報を取得していますが、libapache2-mod-phpパッケージはまだ14.04メインであり、5.6です。ブラウザでphpinfoをチェックして、バージョンを確認します。また、メインでPHP 7.0を取得するためにUbuntu 16.04への移行を検討することもできます。

43
roktechie

UbuntuのLaravel 5.5でもほぼ同じ問題がありました。最終的に、Apacheが使用するphpのバージョンを切り替える解決策 here を見つけました。

  1. sudo a2dismod php5
  2. sudo a2enmod php7.1
  3. SudoサービスApache2の再起動

そしてそれは動作します

コマンドラインの使用中にこのエラーに遭遇した場合、実行しようとしているものを実行するには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合体演算子」です。詳細については、こちらを参照してください。

php7 New Operators

2
James Fannon

Phpバージョンを新しくアップグレードした場合は、ウェブサーバーサービスを再起動するのを忘れる可能性があります。

0
Matricore

同じエラーが発生しましたが、問題はComposerを正しくインストールしていなかったことです。

私はWindowsを使用しており、Composer-Setup.exegetcomposer.org からインストールしました。PHPの複数のバージョンがインストールされている場合は、実行しているバージョンを選択する必要がありますインストールのこのポイント

enter image description here

0