Laravel:PHP解析错误:语法错误,意外的“?”在/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php中的第500行

时间:2018-12-12 18:11:42

标签: php laravel ubuntu

由于我将php版本从5.6升级到7.2,因此我的php_errors.log上存在持久错误: PHP Parse error: syntax error, unexpected '?' in /vendor/laravel/framework/src/Illuminate/Foundation/helpers.php on line 500

第500行:

return $factory->of($arguments[0], $arguments[1])->times($arguments[2] ?? null);

我在stackoverflow上搜索它,主要原因是服务器仍在使用php5.6,但我认为这不是原因。 Platform是Laravel 5.7,显然一切正常。

如果我从终端运行php -v,我得到的是PHP 7.2:

PHP 7.2.12-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Nov 12 2018 09:55:12)(NTS) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.12-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

关于stackoverflow的一些问题建议添加一个phpinfo来显示系统使用的php版本,并且实际上是正确的:

php info from my platform

即使我尝试禁用旧版本,服务器也说php5.6已被禁用:

Module php5.6 already disabled

在禁用php5.6并运行php 7.2的情况下,这可能是什么引起的?

谢谢。

2 个答案:

答案 0 :(得分:2)

发生此问题的原因是您的版本路径仍然是5.6,将其设置为7.2

//在php版本之间切换

sudo update-alternatives --set php /usr/bin/php5.6

sudo update-alternatives --set phar /usr/bin/phar5.6

sudo update-alternatives --set phar.phar /usr/bin/phar.phar5.6

sudo a2dismod php7.2

sudo a2enmod php5.6

//切换到php 7.2

sudo update-alternatives --set php /usr/bin/php7.2

sudo update-alternatives --set phar /usr/bin/phar7.2

sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.2

sudo a2dismod php5.6

sudo a2enmod php7.2

答案 1 :(得分:0)

按@MonkeyZeus的建议,通过重新启动服务器解决了问题。显然,在升级PHP和Laravel之后都没有加进去。