PHP使用file_get_contents()检查外部服务器上是否存在文件

问题描述 投票:3回答:3

使用file_get_contents()方法检查外部服务器上是否存在文件,此方法是否可以正常工作?

$url_file = "http://website.com/dir/filename.php";
$contents = file_get_contents($url_file);

if($contents){
echo "File Exists!";
} else {
echo "File Doesn't Exists!";
}
php file-io file-get-contents
3个回答
4
投票

我认为最好的方法是使用这个脚本:

$file = "http://website.com/dir/filename.php";
$file_headers = get_headers($file);

如果文件不存在$file_headers[0]的输出是:HTTP/1.0 404 Not FoundHTTP/1.1 404 Not Found

如果文件不存在,使用strpos方法检查404字符串:

if(strpos($file_headers[0], '404') !== false){
echo "File Doesn't Exists!";
} else {
echo "File Exists!";
}

谢谢你的帮助:)


1
投票

这适用于您要做的事情。在这里看到http://php.net/manual/en/function.file-exists.php#75064

$file = 'http://www.domain.com/somefile.jpg';
$file_headers = @get_headers($file);
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
    $exists = false;
}
else {
    $exists = true;
}

0
投票

来自blamonetAjie Kurniyawan的答案都有些正确,但失败次数多于404(3xx,4xx,5xx回复)。有很多HTTP响应无法从给定服务器“获取/下载”文件。

所以我建议检查200 OK是否有反应。

$file = "http://website.com/dir/filename.php";
$file_headers = @get_headers($file);

if ($file_headers) {
  if (strpos($file_headers[0], ' 200 OK') === true) {
    echo "File Exists";
  } else {
    echo "File Doesn't Exist, Access Denied, URL Moved etc";
    //you can check more responses here 404, 403, 301, 302 etc 
  }
} else {
  echo "Server has not responded. No headers or file to show.";
}
© www.soinside.com 2019 - 2024. All rights reserved.