PHP脚本检查远程服务器上是否存在文件


PHP script to check on remote server, a file exists

我遇到了定位PHP脚本的问题,该脚本允许我在远程服务器上获取txt文件的内容,然后输出到变量。将某些东西输出到变量并不是困难的部分。最困难的部分是拿起并阅读文件的内容。有人有什么想法吗?

我搜索过论坛,只能找到一个在本地有效的方法。不理想,因为目标很遥远。

真正的目标是,我如何发现远程服务器上是否存在文件,并以html格式输出状态。

想法?

假设httpftp可以访问远程服务器,则可以使用file_exists():

if (file_exists("http://www.example.com/somefile.txt")) {
 echo "Found it!;
}

if (file_exists("ftp:user:password@www.example.com/somefile.txt")) {
 echo "Found it!;
}

使用此:

$url = 'http://php.net';
$file_headers = @get_headers($url);
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
    echo "URL does not exist";
}
else {
    echo "URL exists";
}

来源:http://www.php.net/manual/en/function.file-exists.php#75064

您可以尝试使用以下代码:

if (file_exists($path)) {
    echo "it exists";
} else {
    echo "it does not exist";
}

如您所见,$path是您的文件的路径。当然,你可以写任何其他的东西,而不是那些echo

访问其他服务器上的文件可能非常棘手!如果您可以通过ftp访问该文件,则可以使用ftp来获取该文件,例如使用ftp_fget()。

如果您无法通过ssh访问文件系统,则只能检查服务器在请求文件时给出的响应。如果服务器以错误404响应,则该文件不存在,或者由于服务器配置的原因无法通过http访问。

您可以通过curl检查这一点,请参阅本教程以获得通过curl获取响应代码的详细解释。

我知道这是一个旧线程,但正如Lars Ebert所指出的,在远程服务器上检查文件的存在可能很棘手,所以我可以在我们的大型旅游网站上使用cURL来检查服务器响应。使用file_exists()每次都会抛出一个错误,但事实证明,检查"200 OK"是非常成功的。以下是我们用于检查酒店列表页面图像的代码:

$media_url = curl_init("http://pathto/remote_file.png");
curl_setopt($media_url, CURLOPT_RETURNTRANSFER, true);
$media_img = curl_exec($media_url);
$server_response = curl_getinfo($media_url, CURLINFO_HTTP_CODE);
if($server_response != 200){
    echo "pathto/graphics/backup_image.png";
}else{
    echo "http://pathto/remote_file.png";
}

何处"http://pathto/remote_file.png"是我们寻找的远程图像,但我们需要知道它是否真的存在。如果远程图像不存在,我们会显示"pathto/graphics/backup_image.png"。

我知道与file_exists()相比,它非常冗长,但它也更准确,至少到目前为止是这样。