可能重复:
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();
?>
答案 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(),你就可以通过这种方式确定相对/绝对路径。