2

私の PHP アプリでは、require_once. 私の開発用 PC では、これは正常に機能し、同じファイルを複数回インクルードしようとしません。ただし、本番サーバーに移動するとエラーが発生します

クラス myClass を再宣言できません

コードを検索したところ、これは への呼び出しの直後に発生することがわかったrequire_onceので、それが原因であるに違いありません。

私はプロジェクト全体を検索しましたが、このクラスは間違いなく 1 つのファイルでのみ宣言されており、require_once. require_once実稼働サーバーで異なる動作をさせる奇妙な PHP 構成はありますか?

ありがとう

4

2 に答える 2

0

インクルードされたクラス ファイルの先頭に次の行を追加します。

if( class_exists( "<yourclassname>"))
{
throw new Exception("Class already defined");
}

クラスが再呼び出しされた場合に、明確なエラー メッセージが表示されるようになりました。

于 2013-07-11T08:51:32.933 に答える
0

OK、この不快な問題は、私が認識している 2 つのことのいずれかによって引き起こされる可能性があります。

シンボリックリンク; ファイルとそのファイルを指すシンボリックリンクからロードする場合

OS X (およびおそらく Windows) では、ファイル名は大文字と小文字を区別しません。PHPのrequire_onceはそうではありません

これは今日、私を数時間混乱させました。私は通常 Linux で作業していますが、これが問題になる Mac に強制されました。

于 2013-07-19T00:44:51.310 に答える