Ошибка PHP Parse: синтаксическая ошибка, неожиданный '?' в helpers.php 233

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

Ошибка PHP Parse: синтаксическая ошибка, неожиданный '?' в поставщике /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

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

Ответ 1

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

Ответ 2

У меня была примерно такая же проблема с Laravel 5.5 на ubuntu, наконец, я нашел решение здесь для переключения между версиями php, используемыми apache:

  1. sudo a2dismod php5
  2. sudo a2enmod php7.1
  3. sudo service apache2 restart

и он работает

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

enter image description here