检查并从子域名中读取文件

11 浏览
0 Comments

检查并从子域名中读取文件

我有一个子域名sub.domain.com。这个子域名指向我的Web服务器根目录上的一个目录root/sub。

现在我在服务器根目录下的另一个目录root/pdf上有一些pdf文件。

我想要检查特定的pdf文件是否存在,如果存在,我想将该文件复制到子域名的临时目录中。

如果我调用一个名为sub/check.php的php脚本来检查存在的pdf文件:

$filename = "http://www.domain.com/pdf/1.pdf";
if (file_exists($filename)) 
{
    "存在";
} 
else 
{
    "不存在";
}

它总是显示:不存在。

如果我将该URL放入浏览器中,pdf文件会显示出来。

我的/sub目录中的php脚本如何访问根目录或root/pdf中的文件?

再见,jogi

0
0 Comments

问题的原因是file_exists()函数在本地机器上查找文件是否存在,而你正在使用一个URL。

解决方法是将URL转换为本地文件路径,可以使用以下代码:

$filename = realpath(dirname(__FILE__)) . "/pdf/1.pdf";

如果你的脚本不在根目录中,而是在/sub目录中,可以使用以下代码:

$filename = realpath(dirname(__FILE__)) . "/../pdf/1.pdf";

其中的..表示返回上一级目录。

0
0 Comments

问题出现的原因是使用file_exists()函数无法检查远程URL上的文件是否存在。该函数只能用于检查文件系统中的文件是否存在。解决方法是使用cURL来实现检查远程URL上的文件是否存在。

解决方法的代码如下:

    <?php
    $ch = curl_init("https://www.google.co.in/images/srpr/logo4w.png"); //替换为你要检查的文件URL
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false);
    curl_exec($ch);
    $retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if($retcode==200)
     {
      echo "exists";
     }
   else
     {
      echo "not exists";
     }
    ?>

然后,文章中提到了如何将文件复制到子目录中的问题,并且给出了两种方法。但这不是与检查文件是否存在的问题相关的。如果对这个问题感兴趣,可以参考这个线程的讨论:stackoverflow.com/questions/9843933/…

最后,提问者认为可能可以使用cURL来同时检查文件是否存在和读取文件内容,但这与问题无关。

0