Symfony \ Component \ Debug \ Exception \ FatalErrorException laravelエラー


32

新しいLaravelプロジェクトでこのエラーが発生します。新規インストール後に実行しようとしています。

Symfony \ Component \ Translation \ TranslatorInterface :: setLocale($ locale)の宣言は、Symfony \ Contracts \ Translation \ LocaleAwareInterface :: setLocale(string $ locale)と互換性がある必要があります


新規インストール-何も変更していませんか?言語は何に設定されていconfig/app.phpますか?
ジェレミーハリス

@JeremyHarrisはい完全に新しいインストール。デフォルトの言語は「en」です
Kuldeep Raj

今日のビルド直後の同じ問題
ローガンBリーマン

実行しているPHPのバージョンは何ですか?
ローガンB.リーマン

ここでも同じエラーがあります。これは、Windows xamppでローカルに正常に実行される大きなプロジェクトです。1週間前、サーバー(クラウドホスティングOSのようなcentOS)でもエラーは発生しませんでした。今日、私はプロジェクトをサーバー(ベンダーフォルダーを含む)に1:1でコピーし、サーバーでこのエラーが発生しました。また、composerの再インストールは役に立ちません。ローカル:Windows、PHP 7.2.11で動作します。サーバー:centOSのような、PHP 7.2.24、このエラー。
Dario Eberhard、

回答:


41

私のサーバーには以下の設定がありました:

PHP 7.1.26-1 + ubuntu14.04.1 + deb.sury.org + 1 Laravelフレームワーク5.7.28

解決策:composer.jsonに次のように 追加さ"symfony/translation": "4.3.8"れまし た

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

その後

composer update

または(サーバーでphpバージョンが推奨されていない場合)

composerの更新--ignore-platform-reqs


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のドキュメントにはInstall PHP 7.2.5以降と書かれているので、この制限をcomposer.jsonファイルに追加したくない場合は、PHPのバージョンを7.2.5+にアップグレードできます(他のライブラリの互換性を最初に確認してください)。


3
これが最も簡単で最良の方法であることを確認したいと思います。昨夜問題が発生した後、今朝鉱山に戻り、ファイルを編集せずに修正しました。Symfonyのバージョン4.4に欠陥があります。
ブレット

10
これは、ベンダーファイルの編集などの悪い習慣を必要としないので、受け入れられる答えになるはずです。
ローガンB.リーマン

魅力的な作品!
Ahmad Albab

"symfony / translation": "4.3.8"ではなく "symfony \ translation": "4.3.8"
Kuldeep Raj

13

今日も同じエラーが発生し、少し編集して解決しました。これを行うだけです:に移動
します

vendor / symfony / translation-contracts / LocaleAwareInteface.php

関数stringからキーワードを削除しsetLocale()ます。

この後にこのエラーが発生した場合:

Symfony \ Component \ Translation \ Translator :: trans($ id、array $ parameters = Array、$ domain = NULL、$ locale = NULL)の宣言は、Symfony \ Contracts \ Translation \ TranslatorInterface :: trans(string $ idと互換性がある必要があります、配列$ parameters =配列、?string $ domain = NULL、?string $ locale = NULL)

移動するだけです:

vendor / symfony / translation-contracts / TranslatorInteface.php

関数stringからすべてのキーワードを削除しtrans()ます

-編集-

ベンダーファイルを編集したくない場合は、これを使用できます: composer.jsonファイルを開いて、これを追加します"require"

"symfony / translation": "4.3.8"、

次に、ターミナルを開いて次のように入力します。

作曲家の更新


1
多分それは私が推測するバグです。それでも、その理由はわかりません。
Kuldeep Raj

17
ベンダーファイルを編集することはお勧めできません。
モスタファAttia

1

バグではありません。

symfonyパッケージの最新バージョンでは、PHPバージョンが少なくとも7.2.5である必要があります

PHPのバージョンを7.2.5以降に変更すれば動作するはずです。


1
4.4.Xがphp 7.2.5+を必要とする場合、現在のPHPバージョンが7.2.5未満であれば、Composerは最新バージョンをダウンロードすべきではありませんか?
ジュリアンムーラン

はい、そうです。Composerは、現在のPHPバージョンでサポートされているパッケージをダウンロードする必要があります。
Abhinav Saraswat

4
違います。サーバーでは、php7.3を使用していますが、まだこのエラーが発生します
leeCoder

0

私はグーグルをローミングした後、この問題の簡単な解決策を見つけました。それが誰かを助けることができれば。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

これらの手順に従うと、この問題を取り除くのに役立ちます


0

私のサーバーには以下の設定がありました:

PHP 7.2 Laravel Framework 6.*

解決策:次のようにcomposer.jsonに「symfony / translation」:「4.3.8」を追加しました

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

その後

composer update
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.