Symfony \ Component \ Debug \ Exception \ FatalErrorException laravel Error

32

Je reçois cette erreur sur mon nouveau projet Laravel. J'essaye de courir après une nouvelle installation.

La déclaration Symfony \ Component \ Translation \ TranslatorInterface :: setLocale ($ locale) doit être compatible avec Symfony \ Contracts \ Translation \ LocaleAwareInterface :: setLocale (string $ locale)

Kuldeep Raj
la source
Nouvelle installation - vous n'avez rien modifié? Quelle est la langue définie dans config/app.php?
Jeremy Harris
@JeremyHarris Oui installation complètement nouvelle. La langue par défaut est 'en'
Kuldeep Raj
Même problème juste après la construction d'aujourd'hui
Logan B. Lehman
Quelle version de PHP utilisez-vous?
Logan B. Lehman,
J'ai la même erreur ici. C'est un plus gros projet qui fonctionne bien localement sur windows xampp. Il y a une semaine, il n'y avait pas non plus d'erreur sur le serveur (centOS comme le système d'exploitation cloud). Aujourd'hui, j'ai copié le projet 1: 1 sur le serveur (y compris le dossier du fournisseur) et j'ai alors eu cette erreur sur le serveur. La réinstallation du compositeur n'aide pas non plus. Local: Windows, PHP 7.2.11, fonctionne. Serveur: centOS comme, PHP 7.2.24, cette erreur.
Dario Eberhard

Réponses:

41

Sur mon serveur, voici les configurations:

PHP 7.1.26-1 + ubuntu14.04.1 + deb.sury.org + 1 Laravel Framework 5.7.28

Solution: ajouté "symfony/translation": "4.3.8"dans composer.json comme suit

"require": {
     ...
     "symfony/translation": "4.3.8",
}

et alors

composer update

ou (si la version php n'est pas recommandée sur le serveur)

mise à jour du compositeur --ignore-platform-reqs

zarpio
la source
L'utilisation de PHP 7.2 a également résolu le problème pour moi sans ajouter le "symfony / translation": "4.3.8"
icynets
41

J'ai eu la même erreur sur PHP 7.2.3 après composer update(symfony \ translation v4.3.8 => v4.4.0).

J'ai résolu ce problème "symfony/translation": "4.3.8"dans mon composer.json.

C'est une mauvaise idée d'éditer en dur les fichiers des fournisseurs.

-

Éditer:

Le document Symfony indique Installer PHP 7.2.5 ou supérieur , donc si vous ne voulez pas ajouter cette restriction dans votre fichier composer.json, vous pouvez mettre à jour votre version PHP vers 7.2.5+ (vérifiez d'abord la compatibilité des autres bibliothèques).

Julien Moulin
la source
3
Je veux confirmer que c'est la méthode la plus simple et la meilleure. J'ai annulé le mien ce matin après avoir eu des problèmes hier soir et l'ai corrigé sans modifier aucun fichier. Il y a un défaut dans la version 4.4 de Symfony.
Brett
10
Cela devrait être la réponse acceptée, car elle ne nécessite pas de mauvaises pratiques comme la modification d'un fichier fournisseur.
Logan B. Lehman
Fonctionne comme un charme!
Ahmad Albab
"symfony / translation": "4.3.8" et non "symfony \ translation": "4.3.8"
Kuldeep Raj
13

J'ai eu la même erreur aujourd'hui et je l'ai résolu avec un petit montage. Faites simplement ceci:
accédez à

fournisseur / symfony / traduction-contrats / LocaleAwareInteface.php

et supprimez le stringmot-clé de la setLocale()fonction.

Si vous obtenez cette erreur après cela:

La déclaration Symfony \ Component \ Translation \ Translator :: trans ($ id, array $ parameters = Array, $ domain = NULL, $ locale = NULL) doit être compatible avec Symfony \ Contracts \ Translation \ TranslatorInterface :: trans (string $ id , array $ parameters = Array,? string $ domain = NULL,? string $ locale = NULL)

Accédez simplement à:

fournisseur / symfony / traduction-contrats / TranslatorInteface.php

et supprimez tous les stringmots clés de la trans()fonction

--ÉDITER--

Si vous ne souhaitez pas modifier les fichiers du fournisseur, vous pouvez utiliser ceci: Ouvrez votre fichier composer.json et ajoutez-le dans"require"

"symfony / translation": "4.3.8",

Ouvrez ensuite votre terminal et saisissez ceci:

mise à jour du compositeur

Lokendra Soni
la source
1
C'est peut-être un bug, je suppose. Pourtant, je ne connais pas la raison derrière cela.
Kuldeep Raj
17
PAS une bonne idée de modifier les fichiers des fournisseurs.
Mostafa Attia
1

Ce n'est pas un bug.

La dernière version des packages symfony nécessite que la version PHP soit au moins 7.2.5

Changez la version PHP en 7.2.5 ou supérieure et cela devrait fonctionner.

Abhinav Saraswat
la source
1
Si 4.4.X nécessite php 7.2.5+, Composer ne devrait pas télécharger la dernière version si la version PHP actuelle est inférieure à 7.2.5, n'est-ce pas?
Julien Moulin
Oui, tu as raison. Composer doit télécharger le package qui est pris en charge dans la version PHP actuelle.
Abhinav Saraswat
4
Pas vrai. Sur le serveur, j'utilise php7.3 et j'ai toujours cette erreur
leeCoder
0

J'ai trouvé une solution simple à ce problème après avoir si longtemps erré sur Google. Si cela pouvait aider quelqu'un. Mettre à jour votre version PHP vers 7.2 ou plus

 1. sudo a2dismod phpX(X is less than 7.2 version) 
 2. sudo a2enmod php7.2(could be greater than or equal to 7.2)
 3. service apache2 restart

Suivre ces étapes devrait vous aider à vous débarrasser de ce problème

VishalParkash
la source
0

Sur mon serveur, voici les configurations:

PHP 7.2 Laravel Framework 6.*

Solution: ajout de "symfony / translation": "4.3.8" dans composer.json comme suit

"require": {
     ...
     "symfony/translation": "4.3.8",
}

et alors

composer update
Alex
la source