4
votes

Since i upgraded my php version from 5.6 to 7.2, i have a persistant error on my php_errors.log: PHP Parse error: syntax error, unexpected '?' in /vendor/laravel/framework/src/Illuminate/Foundation/helpers.php on line 500

On Line 500:

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

I Search for this on stackoverflow, and the main cause is server still using php5.6, but i think it's not the reason. Platform is Laravel 5.7 and apparently is all working fine.

If i run php -v from the terminal i got 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

Some questions on stackoverflow suggest adding a phpinfo to show the php version used by the system, and actually is the correct:

php info from my platform

Even if i tried to disable old version, server says that php5.6 is already disabled:

Module php5.6 already disabled

With php5.6 disabled and php 7.2 up and running, what could be causing this ?

Thanks in advance.

2
What is on line #499, #500, and #501?MonkeyZeus
Line 500 seems to be return $factory->of($arguments[0], $arguments[1])->times($arguments[2] ?? null);, which should work in 7.2. I'm not sure where you're running phpinfo from, but try creating the file within the public directory and browse to it, just in case it's running from a different ini.aynber
Yeah, I'd put the phpinfo() call in Laravel's public/index.php to make sure Laravel is getting PHP 7.2. The error message you're getting is exactly what older PHP versions would say when encountering modern Laravel.ceejayoz
are you using mod_php? did you restart Apache after switching to 7.2?Joni
Try restarting your web server. Something is not adding up...MonkeyZeus

2 Answers

8
votes

This problem occurs because your version path is still 5.6 set it 7.2

//SWITCHING between PHP versions

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

//Switch into 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

0
votes

Problem solved with a server reboot, as suggested by @MonkeyZeus. Apparently something was not adding up after upgrade both PHP and Laravel.