PHP Parse error: syntax error, unexpected '?' in helpers.php 233

♀尐吖头ヾ 提交于 2019-11-26 04:27:09

问题


When I create a new Laravel project, the browser displays an error 500. I found this in the log:

PHP Parse error: syntax error, unexpected \'?\' in vendor/laravel/framework/src/Illuminate/Foundation/helpers.php on line 233

the code in 233 is:

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

But as i know, null coalescing operator( ?? ) is supported from PHP 7.0

My PHP Version:

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, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.1.8-2+ubuntu14.04.1+deb.sury.org+4, Copyright (c) 1999-2017, by Zend Technologies

Laravel Version: 5.5.0

Who knows what happened?


回答1:


If I had to guess, I'd say you installed the PPA 7.1.8 as CLI only (php7-cli). You're getting your version info from that, but your libapache2-mod-php package is still 14.04 main which is 5.6. Check your phpinfo in your browser to confirm the version. You might also consider migrating to Ubuntu 16.04 to get PHP 7.0 in main.




回答2:


I had approximately the same problem with Laravel 5.5 on ubuntu, finally i've found a solution here to switch between the versions of php used by apache :

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

and it works




回答3:


If you came across this error while using the command line its because you must be using php 7 to execute whatever it is you are trying to execute. What happened is that the code is trying to use an operator thats only available in php7+ and is causing a syntax error.

If you already have php 7+ on your computer try pointing the command line to the higher version of php you want to use.

export PATH=/usr/local/[php-7-folder]/bin/:$PATH

Here is the exact location that worked based off of my setup for reference:

export PATH=/usr/local/php5-7.1.4-20170506-100436/bin/:$PATH

The operator thats actually caused the break is the "null coalesce operator" you can read more about it here:

php7 New Operators




回答4:


If you have newly upgraded your php version you might be forget to restart your webserver service.




回答5:


I had the same error and the problem is that I had not correctly installed Composer.

I am using Windows and I installed Composer-Setup.exe from getcomposer.org and when you have more than one version of PHP installed you must select the version that you are running at this point of the installation



来源:https://stackoverflow.com/questions/45992685/php-parse-error-syntax-error-unexpected-in-helpers-php-233

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!