你可以使用PHP的文件存在于服务器外的文件中吗?

时间:2013-09-20 11:35:20

标签: php file-exists

我需要使用PHP来检查文件是否存在于正在运行的服务器之外。这个问题完美地解答了如何检查服务器上的文件:

PHP's file_exists() will not work for me?

...但我需要检查网络上不同服务器上的文件与托管PHP的文件。这可能吗?

5 个答案:

答案 0 :(得分:2)

可能以间接方式进行。您始终可以发送HEAD请求,看看您是否从服务器获取了所请求资源的HTTP 200。希望它有所帮助。

答案 1 :(得分:2)

两种可能的解决方案:

  1. 导出文件驻留在服务器2上的文件系统/目录,以便它可以安装在服务器1上。例如,您可以使用NFS或CIFS(SMB / Samba)。然后,您可以在已安装文件系统的路径上使用file_exists,它应该像本地文件一样工作。

  2. 在服务器2上运行一些可以检查文件是否存在的服务。例如。您也可以在Server 2上安装Web服务器并编写一个简短的PHP脚本来执行file_exists,然后例如只返回1或0作为文本。然后,您可以从服务器1请求该URL并处理结果。

答案 2 :(得分:0)

尝试使用curl之类的,

$ch = curl_init("http://www.example.com/file.jpg");

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);

答案 3 :(得分:0)

您可以尝试(仅适用于小文件!):

$file = file_get_contents('http://www.yourdomain.com/yourfile');
if (!empty($file)) {
    // there is a file
}

答案 4 :(得分:0)

无法检查服务器上是否存在文件,并且100%表示这是真的。由于文件权限。

您可以尝试下载该文件,当它有权阅读时,您可以使用fopen()file_get_contents()等函数。

您也可以在http端口上打开连接并检查答案是否为200.如果是,则文件存在。

如果你想使用fopen和file_get_contents,你应该检查 allow_url_fopen 是否设置为 TRUE

file_exists() page in manual上有代码:

 $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;
 }

您也可以使用它。