web-dev-qa-db-fra.com

PHP Erreur d'analyse: erreur de syntaxe, '?' Inattendu dans helpers.php 233

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

Erreur d'analyse PHP: erreur de syntaxe, '?' Inattendu dans vendeur/laravel/framework/src/Illuminate/Foundation/helpers.php en ligne 233

le code en 233 est:

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

Mais comme je le sais, l’opérateur de fusion nul (??) est pris en charge à partir de PHP 7.0

Mon PHP Version:

PHP 7.1.8-2 + ubuntu14.04.1 + deb.sury.org + 4 (cli) (construit le 4 août 2017 14:34:05) (NTS) Copyright (c) 1997-2017 Le PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies avec Zend OPcache v7.1.8-2 + ubuntu14.04.1 + deb.sury.org + 4, Copyright (c) 1999-2017, par Zend Technologies

Laravel Version: 5.5.0

Qui sait ce qui s'est passé?

29
cuimingda

Si je devais deviner, je dirais que vous avez installé le PPA 7.1.8 en tant que CLI uniquement (php7-cli). Vous obtenez vos informations de version à partir de cela, mais votre paquet libapache2-mod-php est toujours 14.04 principal, ce qui correspond à 5.6. Vérifiez votre phpinfo dans votre navigateur pour confirmer la version. Vous pouvez également envisager de migrer vers Ubuntu 16.04 pour obtenir PHP 7.0 dans main.

43
roktechie

J'ai eu à peu près 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ées par Apache:

  1. Sudo a2dismod php5
  2. Sudo a2enmod php7.1
  3. redémarrage du service Sudo Apache2

et il fonctionne

12

Si vous rencontrez cette erreur lors de l'utilisation de la ligne de commande, vous devez utiliser PHP 7 pour exécuter tout ce que vous essayez d'exécuter. Ce qui s’est passé, c’est que le code essaie d’utiliser un opérateur qui n’est disponible que dans php7 + et cause une erreur de syntaxe.

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

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

Voici l'emplacement exact qui a fonctionné en fonction de ma configuration pour référence:

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

L’opérateur qui a réellement causé la rupture est l’opérateur "null coalesce", vous pouvez en savoir plus à ce sujet ici:

Nouveaux opérateurs php7

2
James Fannon

Si vous avez récemment mis à niveau votre version php, vous pouvez oublier de redémarrer votre service de serveur Web.

0
Matricore

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

J'utilise Windows et j'ai installé Composer-Setup.exe à partir de getcomposer.org et lorsque plusieurs versions de PHP sont installées, vous devez sélectionner la version sous laquelle vous exécutez l'application. ce point de l'installation

enter image description here

0
Vladimir Salguero