1

私は最近、ローカルで広範なテストを行った後、Web 上に Laravel 4 プロジェクトを展開しました。オフラインでは問題はありませんでしたが、ライブになった後、いくつかの奇妙な問題が発生しました。

プロジェクトには Git リポジトリがあり、1 つのコントローラーがリポジトリで変更されていることが IDE (PHPStorm) によって認識されないことがあります。変更を加えてコミットしようとすると、変更がないというエラーが表示されます。また、ある時点で、ファイルの名前が「News.php」から「news.php」に変更されました。ファイルの大文字と小文字を大文字に戻しました NI はプロジェクト内の他の名前を変更しませんでした-このクラス(およびそのためのファイル)へのすべての参照は「ニュース」のままでした。

今朝突然、ニュース コントローラーを使用したルートで、問題のファイルを含めることができないという 500 エラーが発生しました。私は FTP ファイル システムをチェックし、ファイルが存在し、無傷であることを確認しました。多くの不満の後、ファイルの名前を「news.php」(小文字)に変更すると、すべてが再び機能しました。もう一度「News.php」に名前を変更しようとしたところ、500 エラーが返されました。

発生したもう 1 つの奇妙なことは、コントローラー アクションへの参照がすべて小文字であり (私の見落としですか?)、アプリがランダムに 500 エラー Class Not Found でクラッシュしたことです。アプリをローカルでテストしたところ、小文字でも大文字でも問題なく動作し、コントローラー参照の名前を「admin_news」から「Admin_News」に変更すると、実稼働サーバーの問題が解決しました。

Laravel 4には、「news.php」を参照し、「News.php」の使用を拒否している可能性のあるある種のキャッシュがありますか? この奇妙な動作に関するアイデアはありますか?

4

4 に答える 4

10

ルートまたはコントローラーを変更するときは、試してください

composer dump-autoload

そして、新しい名前/コンテンツでオートローダーを再構築します

于 2013-08-28T13:12:51.527 に答える
1

あなたの質問を読んだときに最初に頭に浮かんだのは、Windows コンピューターで開発し、Linux サーバーにデプロイしているということです (またはその逆ですか?)。

セットアップで同様の問題が発生しました。職場の Windows マシンで開発し、Linux サーバーにデプロイしています。Windows のファイル システムは大文字と小文字を区別しないように見えるため、news.php = News.php のようになりますが、Linux のファイル システムは大文字と小文字を区別します。これは、名前空間名にも当てはまるようです。/App/Models/Auth = Windows では /App/models/Auth ですが、Linux ではありません。これは、私がそれを理解する前に、いくつかの頭痛の種を引き起こします.

私は今、Vagrant を使用してローカル開発エリアをセットアップし始めました。これは、展開しているシステムのミラー イメージであり、あるシステムで動作する場合は別のシステムでも動作することを意味します。

于 2013-08-27T08:56:51.947 に答える
0

Laravel には、モデルとコントローラーにアクセスする方法があります。私は常にクラスに与えられた名前のようなファイルに名前を付けます (例えば、クラスが BaseController と名付けられた場合、ファイルは BaseController.php と名付けられなければなりません)。しかし、PHP Storm の使用が、フレームワークの制御を超えたアクションを実行している可能性があります。

于 2013-08-26T22:52:14.423 に答える