Błąd laravel Symfony \ Component \ Debug \ Exception \ FatalErrorException

32

Otrzymuję ten błąd w moim nowym projekcie Laravel. Próbuję uruchomić po nowej instalacji.

Deklaracja Symfony \ Component \ Translation \ TranslatorInterface :: setLocale ($ locale) musi być kompatybilna z Symfony \ Contracts \ Translation \ LocaleAwareInterface :: setLocale (string $ locale)

Kuldeep Raj
źródło
Świeża instalacja - nic nie zmodyfikowałeś? W jakim języku jest ustawiony config/app.php?
Jeremy Harris
@JeremyHarris Tak całkowicie świeża instalacja. Domyślnym językiem jest „en”
Kuldeep Raj
Ten sam problem zaraz po zbudowaniu dzisiaj
Logan B. Lehman
Jaką wersję PHP używasz?
Logan B. Lehman
Mam ten sam błąd tutaj. Jest to większy projekt, który działa dobrze lokalnie na Windows Xampp. Tydzień temu nie wystąpił również błąd na serwerze (centOS, taki jak chmurowy system operacyjny). Dzisiaj skopiowałem projekt 1: 1 na serwer (w tym folder dostawcy) i wtedy miałem ten błąd na serwerze. Ponowna instalacja kompozytora również nie pomaga. Lokalny: Windows, PHP 7.2.11, działa. Serwer: jak CentOS, PHP 7.2.24, ten błąd.
Dario Eberhard

Odpowiedzi:

40

Na moim serwerze były konfiguracje:

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

Rozwiązanie: Dodano "symfony/translation": "4.3.8"w pliku composer.json w następujący sposób

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

i wtedy

composer update

lub (jeśli wersja PHP nie jest zalecana na serwerze)

aktualizacja kompozytora --ignore-platform-reqs

zarpio
źródło
Korzystanie z PHP 7.2 również rozwiązało problem bez dodawania „symfony / translation”: „4.3.8”
icynets
41

Otrzymałem ten sam błąd w PHP 7.2.3 po composer update(symfony \ translation v4.3.8 => v4.4.0).

Ten problem rozwiązałem za pomocą "symfony/translation": "4.3.8"mojego composer.json.

Trudno edytować pliki dostawców.

-

Edytować:

Dokument Symfony mówi Zainstaluj PHP 7.2.5 lub nowszy , więc jeśli nie chcesz dodawać tego ograniczenia do pliku composer.json, możesz zaktualizować wersję PHP do wersji 7.2.5+ (najpierw sprawdź kompatybilność innych bibliotek).

Julien Moulin
źródło
3
Chcę potwierdzić, że jest to najłatwiejsza i najlepsza metoda. Wycofałem kopalnię dziś rano po problemach zeszłej nocy i naprawiłem ją bez edycji żadnych plików. W wersji 4.4 Symfony występuje usterka.
Brett
10
To powinna być zaakceptowana odpowiedź, ponieważ nie wymaga złych praktyk, takich jak edycja pliku dostawcy.
Logan B. Lehman
Działa jak urok!
Ahmad Albab,
"symfony / translation": "4.3.8" not "symfony \ translation": "4.3.8"
Kuldeep Raj
13

Otrzymałem dzisiaj ten sam błąd i rozwiązałem go z niewielką edycją. Po prostu zrób to:
przejdź do

vendor / symfony / translation-contract / LocaleAwareInteface.php

i usuń stringsłowo kluczowe z setLocale()funkcji.

Jeśli pojawi się ten błąd po tym:

Deklaracja Symfony \ Component \ Translation \ Translator :: trans ($ id, array $ parameters = Array, $ domain = NULL, $ locale = NULL) musi być kompatybilny z Symfony \ Contracts \ Translation \ TranslatorInterface :: trans (string $ id , tablica $ parametry = Tablica,? ciąg $ domain = NULL,? ciąg $ locale = NULL)

Wystarczy przejść do:

vendor / symfony / translation-contract / TranslatorInteface.php

i usuń wszystkie stringsłowa kluczowe z trans()funkcji

--EDYTOWAĆ--

Jeśli nie chcesz edytować plików dostawcy, możesz użyć tego: Otwórz plik composer.json i dodaj go"require"

„symfony / translation”: „4.3.8”,

Następnie otwórz terminal i wpisz:

aktualizacja kompozytora

Lokendra Soni
źródło
1
Może to błąd. Mimo to nie znam przyczyny tego.
Kuldeep Raj
17
NIE jest dobrym pomysłem do edycji plików dostawcy.
Mostafa Attia,
1

To nie jest błąd.

Najnowsza wersja pakietów symfony wymaga wersji PHP co najmniej 7.2.5

Zmień wersję PHP na 7.2.5 lub nowszą i powinna działać.

Abhinav Saraswat
źródło
1
Jeśli 4.4.X wymaga php 7.2.5+, Composer nie powinien pobierać najnowszej wersji, jeśli aktualna wersja PHP jest mniejsza niż 7.2.5, prawda?
Julien Moulin,
Tak masz rację. Kompozytor powinien pobrać pakiet obsługiwany w bieżącej wersji PHP.
Abhinav Saraswat,
4
Nie prawda. Na serwerze używam php7.3 i nadal pojawia się ten błąd
leeCoder
0

Znalazłem proste rozwiązanie tego problemu po tak długim roamingu w Google. Gdyby to mogło komuś pomóc. Aktualizacja wersji PHP do wersji 7.2 lub nowszej

 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

Wykonanie tych kroków powinno pomóc Ci pozbyć się tego problemu

VishalParkash
źródło
0

Na moim serwerze były konfiguracje:

PHP 7.2 Laravel Framework 6.*

Rozwiązanie: Dodano „symfony / translation”: „4.3.8” w pliku composer.json w następujący sposób

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

i wtedy

composer update
Alex
źródło