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

12,889

Solution 1

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

Solution 2

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

Share:
12,889
Ricardo Santos
Author by

Ricardo Santos

Updated on June 18, 2022

Comments

  • Ricardo Santos
    Ricardo Santos almost 2 years

    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.