由于我将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版本,并且实际上是正确的:
即使我尝试禁用旧版本,服务器也说php5.6已被禁用:
Module php5.6 already disabled
在禁用php5.6并运行php 7.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之后都没有加进去。