Fopen工作,我可以读取文件和内容,但是当我指定一个无效的文件时,我希望它返回404标题,但它不能完全正常工作。
$handle = fopen($filepath, "rb");
if (!$handle) {
header("HTTP/1.0 404 Not Found");
exit;
}
在这里我读过的大约5篇帖子中,这些都是例子,它们看起来和我一样。
答案 0 :(得分:1)
这是您想要的代码
$handle = fopen($filepath, "rb");
if ($handle === false) {
http_response_code(404);
exit;
}
当您无法打开文件时(根据手册页)
,它会设置响应代码答案 1 :(得分:1)
所以,由于这个话题越来越大,我没有意识到我得到了这么多回复。谢谢大家!
所以,这个问题实际上并不是我所拥有的代码......我实际上是愚蠢的,它一直给我一个404 Not Found,但由于某种原因它似乎并不像。 Protip,不要关闭错误报告,并有一个替代PHP函数surpress错误&头。
谢谢大家,但代码中确实没有错误,只是我纯粹的愚蠢。
答案 2 :(得分:-1)
以下是问题:当您执行 $ handle = fopen($ filepath," rb"); PHP的fopen尝试找到文件。如果找不到文件,它会生成一个错误,导致一些输出被发送到Stream。输出已经发送到Stream;它不再可能发送标题...所以 IF-ELSE声明可以做技巧 :
<?php
$filepath = "page-1.php";
if(file_exists($filepath) && ($handle = @fopen($filepath, "rb"))){
// WORK WITH YOUR $handle IN THIS BLOCK
}else{
header("location: page-2.php"); // YOU SHOULD REDIRECT TO A LOCATION SENDING IT THE HEADER...
//header("location: page-1.php"); // SENDING TO THE SAME LOCATION WORKS AS WELL...
header("HTTP/1.0 404 Not Found");
exit;
}