PHP を使用して、PHP アプリケーション自体の更新プログラムを解凍しています。これは、更新サーバーから zip ファイルを取得して解凍し、解凍したファイルをアプリケーション用に現在存在するファイルに再帰的に移動することによって行われます。
問題は、次にアプリケーションを使用するときに、__FILE__ (少なくとも 1 つの新しいファイル内) が、zip ファイルが最初に解凍されたディレクトリ内の場所を示していることです。これはファイルの実際の場所ではないため、現在のディレクトリを見つけるために __FILE__ を使用する後続の require 関数呼び出しでエラーが発生します。
最も奇妙な部分: エディターでファイルを開いて再保存するだけで (スペースを追加して削除するなど)、PHP がファイル パスを正しく解決します。
何がうまくいかないのかについてのアイデアはありますか? どういうわけかPHPは、ファイルがどこから来たのかを「知って」おり、現在の場所ではなくその情報を取得しているようです。ファイルを再保存すると、PHP (またはファイル システム) が起動します。