41 votes

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

Quand je crée un nouveau Laravel projet, le navigateur affiche une erreur 500. J'ai trouvé ça dans le journal:

PHP Parse error: syntax error, unexpected '?' dans vendor/laravel/framework/src/Illuminate/Foundation/helpers.php sur la ligne de 233

le code de 233 est:

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

Mais comme je sais, null coalescence de l'opérateur( ?? ) est pris en charge à partir de PHP 7.0

Ma Version de PHP:

PHP 7.1.8-2+ubuntu14.04.1+deb.sury.org+4 (cli) (intégrée: 4 Août 2017 14:34:05) ( NTS ) Copyright (c) 1997-2017 Le PHP Group Zend Engine v3.1.0, le droit d'Auteur (c) 1998-2017 Zend Technologies avec Zend OPcache v7.1.8-2+ubuntu14.04.1+deb.sury.org+4, le droit d'Auteur (c) 1999-2017, par Zend Technologies

Laravel Version: 5.5.0

Qui sait ce qui s'est passé?

54voto

roktechie Points 343

Si je devais deviner, je dirais que vous avez installé le PPA 7.1.8 que CLI uniquement (php7-cli). Vous êtes l'obtention de votre version info, mais votre libapache2-mod-php paquet est encore 14.04 principal qui est de 5,6. Vérifiez votre phpinfo dans votre navigateur pour vérifier la version. Vous pourriez aussi envisager la migration vers Ubuntu 16.04 pour obtenir PHP 7.0 en main.

17voto

J'ai eu environ le même problème avec Laravel 5.5 sur ubuntu, enfin j'ai trouvé une solution ici pour basculer entre les versions de php utilisé par apache :

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

et ça marche

1voto

James Fannon Points 173

Si vous avez rencontré cette erreur lors de l'utilisation de la ligne de commande c'est parce que vous devez être à l'aide de php 7 pour exécuter tout ce que vous essayez d'exécuter. Ce qui s'est passé, c'est que le code est d'essayer d'utiliser un opérateur c'est seulement disponible en php7+ et est à l'origine d'une erreur de syntaxe.

Si vous avez déjà php 7+ sur votre ordinateur, essayez de pointer la ligne de commande à la hausse de la version de php que vous souhaitez utiliser.

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

Voici l'emplacement exact qui a travaillé en fonction de mon installation pour référence:

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

L'opérateur c'est effectivement causé la rupture est le "null fusionnent opérateur" vous pouvez en lire plus à ce sujet ici:

php7 Nouveaux Opérateurs

1voto

Vladimir Salguero Points 1654

J'ai eu le même message d'erreur et le problème est que je n'avais pas installé correctement Compositeur.

Je suis avec Windows et j'ai installé Composer-Setup.exe de getcomposer.org et quand vous avez plus d'une version de PHP installé, vous devez sélectionner la version que vous utilisez à ce point de l'installation

enter image description here

1voto

Matricore Points 359

Si vous avez récemment mis à jour votre version de php que vous pourriez être oubliez pas de redémarrer votre serveur de service.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X