Symfony \ Component \ Debug \ Exception \ FatalErrorException laravel Error

32

Я получаю эту ошибку в моем новом проекте Laravel. Я пытаюсь запустить после новой установки.

Объявление Symfony \ Component \ Translation \ TranslatorInterface :: setLocale ($ locale) должно быть совместимо с Symfony \ Contracts \ Translation \ LocaleAwareInterface :: setLocale (строка $ locale)

Кулдип Радж
источник
Свежая установка - вы ничего не модифицировали? Какой язык установлен в config/app.php?
Джереми Харрис
@JeremyHarris Да, совершенно новая установка. Язык по умолчанию - en
Kuldeep Raj
Та же самая проблема только после строительства сегодня
Логан Б. Лехман
Какую версию PHP вы используете?
Логан Б. Лехман
У меня такая же ошибка здесь. Это более крупный проект, который отлично работает локально на Windows XAMPP. Неделю назад на сервере также не было ошибок (например, CentOS, как облачный хостинг ОС). Сегодня я скопировал проект 1: 1 на сервер (включая папку поставщика) и тогда на сервере была эта ошибка. Также переустановка композитора не помогает. Локальный: Windows, PHP 7.2.11, работает. Сервер: вроде centOS, PHP 7.2.24, эта ошибка.
Дарио Эберхард

Ответы:

41

На моем сервере были следующие конфигурации:

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

Решение: добавлено "symfony/translation": "4.3.8"в composer.json следующим образом

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

а потом

composer update

или (если версия php не рекомендуется на сервере)

Обновление композитора --ignore-platform-reqs

zarpio
источник
Использование PHP 7.2 также решило проблему для меня без добавления «symfony / translation»: «4.3.8»
icynets
41

Я получил ту же ошибку на PHP 7.2.3 после composer update(symfony \ translation v4.3.8 => v4.4.0).

Я решил эту проблему "symfony/translation": "4.3.8"в моем composer.json.

Это плохая идея, чтобы жестко редактировать файлы поставщиков.

-

Редактировать:

Symfony doc сообщает: « Установите PHP 7.2.5 или выше , поэтому, если вы не хотите добавлять это ограничение в свой файл composer.json, вы можете обновить версию PHP до 7.2.5+ (сначала проверьте совместимость других библиотек)».

Жюльен Мулен
источник
3
Я хочу подтвердить, что это самый простой и лучший метод. Этим утром откатил мою обратно после проблем вчерашнего вечера и исправил, не редактируя никаких файлов. Существует дефект в версии 4.4 Symfony.
Бретт
10
Это должен быть принятый ответ, поскольку он не требует плохих практик, таких как редактирование файла поставщика.
Логан Б. Лехман
Работает как шарм!
Ахмад Албаб
"symfony / translation": "4.3.8" not "symfony \ translation": "4.3.8"
Kuldeep Raj
13

Я получил ту же ошибку сегодня, и я решил ее с небольшим редактированием. Просто сделайте это:
перейдите к

поставщик / Symfony / перевод-контракты / LocaleAwareInteface.php

и удалите stringключевое слово из setLocale()функции.

Если вы получите эту ошибку после этого:

Объявление Symfony \ Component \ Translation \ Translator :: trans ($ id, массив $ parameters = Array, $ domain = NULL, $ locale = NULL) должно быть совместимо с Symfony \ Contracts \ Translation \ TranslatorInterface :: trans (строка $ id , массив $ parameters = Array,? string $ domain = NULL,? string $ locale = NULL)

Просто перейдите к:

поставщик / Symfony / перевод-контракты / TranslatorInteface.php

и удалите все stringключевые слова из trans()функции

--РЕДАКТИРОВАТЬ--

Если вы не хотите редактировать файлы вендора, вы можете использовать это: Откройте файл composer.json и добавьте его в"require"

"symfony / translation": "4.3.8",

Затем откройте свой терминал и введите это:

обновление композитора

Локендра Сони
источник
1
Может быть, это ошибка, я думаю. Тем не менее, я не знаю причину этого.
Кулдип Радж
17
НЕ хорошая идея для редактирования файлов вендора.
Мостафа
1

Это не ошибка.

Последняя версия пакетов Symfony требует, чтобы версия PHP была как минимум 7.2.5.

Измените версию PHP на 7.2.5 или выше, и она должна работать.

Абхинав Сарасват
источник
1
Если для 4.4.X требуется php 7.2.5+, Composer не должен загружать последнюю версию, если текущая версия PHP меньше 7.2.5, не так ли?
Жюльен Мулен
Да ты прав. Composer должен загрузить пакет, который поддерживается в текущей версии PHP.
Абхинав Сарасват
4
Не правда. На сервере я использую php7.3, и я все еще получил эту ошибку
leeCoder
0

Я нашел простое решение этой проблемы после роуминга в Google так долго. Если бы это могло помочь кому-то. Обновление вашей версии PHP до 7.2 или более

 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

Выполнение этих шагов должно помочь вам избавиться от этой проблемы.

VishalParkash
источник
0

На моем сервере были следующие конфигурации:

PHP 7.2 Laravel Framework 6.*

Решение: добавлено «symfony / translation»: «4.3.8» в composer.json следующим образом

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

а потом

composer update
Alex
источник