私は 2 つのサーバーを持っています。1 つは実稼働用で、もう 1 つは開発用です。どちらのマシンも Windows マシンで、ネットワーク上で同じユーザーとして Apache を実行しています。先週、ユーザーのネットワーク パスワードが変更され、その時点で機能が停止しました。
問題ありません。問題が発生したことを特定したら、サービスのユーザー/パスワードの資格情報を変更し、Apache を再起動します。
PHP はファイルを開くことを望んでおらず、実稼働マシン上にファイルが存在することさえ認識しません。しかし、開発マシンではすべてがうまくいっています。
説明のために、以下は開発サーバーでは正常に機能しますが、運用サーバーでは機能しません。
<HTML>
<?php
$filename = '\\\\petra\\operations\\test.txt';
if (file_exists($filename)) {
echo "The file <u>$filename</u> exists";
} else {
echo "The file <u>$filename</u> does <b>not</b> exist";
}
?>
</HTML>
開発マシンでは素敵な結果が得られますThe file \\petra\operations\test.txt exists
が、本番マシンでThe file \\petra\operations\test.txt does not exist
は、ネットワーク上の任意のサーバー上の任意のファイルを指すことができ、同じことが起こります。
ハードウェアは 2 つのマシンで完全に異なりますが、ソフトウェアに関しては非常に似ています。たとえば、Apache 構成と php.ini ファイルは正確なコピーです。
これは、私が尋ねた以前の質問に関連しています。その時、私はそれが間違ったファイル パスであるか、誰かが台無しにしたのではないかと考えていました。それは本当でした(パスワードが変更されたのに対して)が、両方のマシンが新しいユーザー資格情報を認識し、両方でApacheが再起動されました。
アイデア?PHP がファイルを開くことができない原因は何ですか?
編集:ファイルに対するユーザー権限とは関係ないと思います。両方のマシンが同じユーザーとして Apache を実行しており、同じネットワーク上の同じファイルを指しています。
ネットワーク上の他のランダムなマシンに新しいテスト ファイルの場所を設定し、その上で非常に寛容なアクセス許可を設定しました。私のphpは今これを呼び出します: $filename = '\\\\procl35\\folder\\test.txt';
そして私The file \\procl35\folder\test.txt does not exist
は本番サーバーに乗ります。