2

我在定位 PHP 脚本以允许我获取远程服务器上的 txt 文件的内容,然后输出到变量时遇到问题。将某些内容输出到变量并不是困难的部分。拾取和读取文件的内容是困难的部分。有人有想法么?

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

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

想法?

4

5 回答 5

4

假设您的远程服务器可以通过http或者ftp您可以使用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!;
}
于 2013-07-15T12:31:45.283 回答
3

您可以尝试使用此代码:

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

如您所见$path,是文件的路径。当然,您可以编写其他任何内容来代替那些echo.

于 2013-07-15T12:26:51.357 回答
3

用这个:

$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

于 2013-07-15T12:24:08.490 回答
2

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

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

可以通过 curl 来查看,通过 curl 获取响应码的详细解释见本教程

于 2013-07-15T12:29:25.193 回答
0

我知道这是一个旧线程,但正如 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() 相比,我知道它非常冗长,但至少到目前为止它也更准确。

于 2017-02-15T18:55:21.560 回答