Ошибка 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:
- sudo a2dismod php5
- sudo a2enmod php7.1
- 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]()