我有一个服务器,用户就像:
http://example.com/userdata/johndoe1/docs.xml
PHP应该检查xml文件是否存在,具体取决于用户名url参数
这是我的PHP代码:
<?php
$filename = $_GET["userpath"];
$username = $_GET["username"];
if (file_exists($filename)) {
header('Location: http://nsc-component.webs.com/auth.html?username=' .$username);
} else {
header('Location: http://nsc-component.webs.com/user/login.html?error=2');
}
echo getcwd();
?>
继续返回该文件不存在。
userpath = http://example.com/userdata/johndoe1/docs.xml(路径)
username = johndoe1(用户名)
为什么文件存在时会继续返回false?
答案 0 :(得分:3)
file_exists()
函数用于检查与PHP代码在同一服务器上的本地文件。
与其他文件处理功能一样,它也可以读取URL,但是此功能可能被视为安全风险,许多服务器将其禁用,并限制您仅从本地服务器读取文件。
您应该检查您的服务器是否允许您这样做。如果没有,您将不得不使用其他方法来读取远程URL,例如,使用CURL。
另请参阅comments in the file_exists()
manual page;一个条目明确给出了如何读取远程文件的答案。以下是手动评论引用的代码:
$file_headers = @get_headers($file);
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
$exists = false;
}
else {
$exists = true;
}
答案 1 :(得分:3)
file_exists 检查您的本地或计算机的已安装文件系统中是否存在文件。它无法通过http检查远程文件。
要对此进行测试,您可以尝试获取文件并验证发送的标头:
$file = 'http://www.domain.com/somefile.jpg';
$file_headers = get_headers($file);
$exists = ($file_headers[0] != 'HTTP/1.1 404 Not Found');
文件存在时,$ exists为true,如果文件不存在则为false。
答案 2 :(得分:3)
file_exist
检查本地文件。如果您想通过URL使用
fopen()
- 返回NULL是文件尚未打开
或cURL
(访问:How can one check to see if a remote file exists using PHP?)
$ch = curl_init("http://example.com/userdata/johndoe1/docs.xml");
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);