Когда я создаю новый проект Laravel, браузер отображает ошибку 500. Я нашел это в журнале:

Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданное '?' в вендоре / laravel / framework / src / Illuminate / Foundation / helpers.php в строке 233

Код в 233:

return app('cache')->get($arguments[0], $arguments[1] ?? null);

Но, как я знаю, оператор объединения нулей (??) поддерживается в PHP 7.0

Моя версия PHP:

PHP 7.1.8-2 + ubuntu14.04.1 + deb.sury.org + 4 (cli) (сборка: 4 августа 2017 г. 14:34:05) (NTS) Copyright (c) 1997-2017 PHP Group Zend Engine v3. 1.0, Copyright (c) 1998-2017 Zend Technologies с Zend OPcache v7.1.8-2 + ubuntu14.04.1 + deb.sury.org + 4, Copyright (c) 1999-2017, Zend Technologies

Laravel Версия: 5.5.0

Кто знает, что случилось?

38
cuimingda 1 Сен 2017 в 05:50

4 ответа

Лучший ответ

Если бы мне пришлось угадывать, я бы сказал, что вы установили PPA 7.1.8 только как CLI (php7-cli). Вы получаете информацию о своей версии, но ваш пакет libapache2-mod-php по-прежнему является основным 14.04, то есть 5.6. Проверьте ваш phpinfo в браузере, чтобы подтвердить версию. Вы также можете рассмотреть переход на Ubuntu 16.04, чтобы получить PHP 7.0 в основном.

50
roktechie 1 Сен 2017 в 03:00

Если вы столкнулись с этой ошибкой при использовании командной строки, то это потому, что вы должны использовать 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

Оператор, который фактически вызвал разрыв, является «оператором нулевого слияния», о котором вы можете прочитать здесь:

php7 Новые операторы

1
James Fannon 8 Сен 2017 в 21:06

Если вы недавно обновили свою версию php, вы можете забыть перезапустить службу веб-сервера.

0
Matricore 17 Сен 2017 в 18:25

У меня была та же ошибка, и проблема в том, что я не правильно установил Composer.

Я использую Windows, и я установил Composer-Setup.exe из getcomposer.org, и когда у вас их несколько версия PHP установлена, вы должны выбрать версию, которую вы используете в данный момент установки

enter image description here

1
Vladimir Salguero 11 Июл 2019 в 14:55