PHP中的file_exists

时间:2012-02-27 19:33:39

标签: php

  

可能重复:
  How can one check to see if a remote file exists using PHP?
  Check if file exists on remote machine

我遇到了这段代码的问题。我正在尝试搜索下面$url中的文件,该文件确实存在,但代码正在返回No files located here。我要么使用了错误的语法,要么我无法以这种方式搜索文件。

请帮忙。提前谢谢。

<?php

function formaction()
{

$url = "http://".$_SERVER['HTTP_HOST'] . "/" . basename(dirname (dirname (dirname (dirname
(__FILE__))))) . "/process.php"; 

$path = false;

      if (@file_exists($url))
      {
         $path = $url;
      }

else
      {
          echo "No file located here";
      }


return $path;

}

echo formaction();


?>

1 个答案:

答案 0 :(得分:1)

由于file_exists()不适用于url:

您可以使用get_headers()检查其404或不直接转到此代码段:

取自PHP手册:http://www.php.net/manual/en/function.file-exists.php#85246

function url_exists($url) {
    // Version 4.x supported
    $handle   = curl_init($url);
    if (false === $handle)
    {
        return false;
    }
    curl_setopt($handle, CURLOPT_HEADER, false);
    curl_setopt($handle, CURLOPT_FAILONERROR, true);  // this works
    curl_setopt($handle, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15") ); // request as if Firefox    
    curl_setopt($handle, CURLOPT_NOBODY, true);
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, false);
    $connectable = curl_exec($handle);
    curl_close($handle);   
    return $connectable;
}

但是在这种情况下,你会发现你不习惯从URL中查找..但是,寻找本地脚本。您不应使用URL,而应使用实际的绝对路径或相对路径。

检查:

echo getcwd() . "\n";

另外,检查dirname(),你就可以通过这种方式确定相对/绝对路径。