1

ユーザー名パラメーターに応じて、XML ファイルが存在するかどうかを確認しようとしています。

<?php
$username = $_GET["username"];
$filename = "/documents/$username/data.xml";

if (file_exists($filename)) {
   // output documents
} else {
   echo "No documents exist in your account.";
}
?>

ファイルが存在しないことを返し続けます。

フルパス: http://example.com/documents/ {ユーザー名}/data.xml

ファイルが存在することがわかっているのに false を返し続けるのはなぜですか?

編集:私は何年も前にこの投稿を作成しました。これは間違いなくユーザーデータを保持する最良の方法ではありませんが、この投稿への回答は file_exists() の適切な説明として役立ちます。

4

3 に答える 3

3

file_existローカルファイルを確認してください。URL経由でファイルをチェックしたい場合は、

fopen()- ファイルが開かれていない場合は NULL を返します

またはcURL(参照: PHP を使用してリモート ファイルが存在するかどうかを確認するにはどうすればよいですか? )

$ch = curl_init("http://example.com/userdata/johndoe1/docs.xml");

curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// $retcode > 400 -> not found, $retcode = 200, found.
curl_close($ch);
于 2013-09-03T12:39:03.173 に答える
3

file_existsは、ファイルがローカルまたはコンピューターのマウントされたファイル システムに存在するかどうかを確認します。http 経由でリモート ファイルをチェックすることはできません。

これをテストするには、ファイルを取得して、送信されたヘッダーを検証します。

$file = 'http://www.domain.com/somefile.jpg';
$file_headers = get_headers($file);
$exists = ($file_headers[0] != 'HTTP/1.1 404 Not Found');

$exists は、ファイルが存在する場合は true であり、ファイルが存在しない場合は false です。

于 2013-09-03T12:37:00.953 に答える