つまり、ローカル プロジェクトでは何かが完全に機能するのに、本番環境にデプロイされるとすべてが壊れてしまうという厄介な問題です。
この場合、通常の codeigniter コントローラー(アプリケーション/コントローラーにある) によって生成されたすべてのページにアクセスできます。ただし、HMVC モジュールにアクセスしようとすると、codeigniter 404 エラーが発生します。
通常のコントローラの状況はまだ問題ありません:
たとえば、関数 page() を含む application/controllers/C1.php に通常のコントローラー C1 がある場合、問題なく www.mysite.com/C1/page にアクセスできます。
HMVC コントローラーへのアクセスに関する問題:
ただし、application/modules/C2/controllers/C2.php にあるコントローラー C2 にアクセスしたい場合は、URL www.mysite.com/C2/page から 404 エラーが発生します。
そして、ajaxを介して通常のコントローラにアクセスする際の問題:
通常の CI コントローラーを参照するパスを使用して ajax 呼び出しを実行すると、2 つ目の問題が発生します。ajax 呼び出しで使用されているパスが認識されていないようで、500 エラーが発生します。ただし、URL バーで同じパスを直接呼び出すと、正しい関数が実行されるようです。Codeigniter base_url() が ajax に対して適切に機能しないで見つかったソリューションを適用することにより、以前に同様の問題を解決しました。ただし、これが同じ問題であるかどうかはまだ特定していません。
ローダーの問題のように感じますが、私は専門家ではありません!
ローダーの問題だったとしても、ローカルでは機能するのに本番環境では機能しないのはなぜですか?
このようなことに遭遇したことはありませんか?この問題に取り組む方法についてのアイデアはありますか?
**編集 3: ** 以前の 2 つの編集は不要になったため削除しました。
デバッグモードを有効にしていくつかのログを追加した後、最終的に答えと思われるものを見つけました。
簡単に言えば、私のローカル コードイグナイター バージョンは Windows で実行され、何らかの理由で、コントローラーに到達しようとすると、ケースは無視されます。したがって、 File.phpとfile.phpは同じものと見なされます。
ただし、本番サーバーは Linux を実行しているため、2 つの異なるファイル名が同じファイルを参照しているとは見なされません。だから私はfile.phpを要求し、サーバーは「そのようなファイルはありません」と答えます。実際に必要なファイルはF ile.php だからです。
提出する必要があります。明日、さらにチェックを行った後、適切な回答を提案します。
ありがとう、
ロイック。