Fopen的作品,我可以閱讀文件和東西,但是當我指定一個無效的,我希望它返回一個404頭,但它不能正常工作。如果fopen不存在,它不會將標題更改爲404?
$handle = fopen($filepath, "rb");
if (!$handle) {
header("HTTP/1.0 404 Not Found");
exit;
}
在我讀過的大約5篇文章中,這些是例子,它們看起來和我一樣。
Fopen的作品,我可以閱讀文件和東西,但是當我指定一個無效的,我希望它返回一個404頭,但它不能正常工作。如果fopen不存在,它不會將標題更改爲404?
$handle = fopen($filepath, "rb");
if (!$handle) {
header("HTTP/1.0 404 Not Found");
exit;
}
在我讀過的大約5篇文章中,這些是例子,它們看起來和我一樣。
現在的問題是:當你沒$處理=的fopen($文件路徑, 「RB」); PHP的fopen試圖找到文件。無法找到文件,它會生成一個錯誤,導致一些輸出被髮送到流。輸出已經發送到流;它已不再可能發送一個頭......如此的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;
}
所以,因爲這個話題是越來越大我不知道我會得到這麼多的反應。謝謝你們!
所以,這個問題實際上是不是代碼我...我是從字面上傻了,這是給我一個404沒有發現這整個時間,但它似乎並不像它的一些原因。 Protip,不要關閉錯誤報告,並有一個可選的PHP功能抑制錯誤&標題。
感謝所有,但實際上是在代碼中沒有錯誤,只是我純粹的愚蠢。
這不應該是一個答案,因爲它不會爲將來的讀者提供任何有關如何解決問題的有用信息。由於該問題沒有任何回覆,我認爲你可以刪除它。如果沒有,請將其標記爲主持人關閉它。 – Barmar
看到[這裏](http://php.net/manual/en/function.http-response-code.php)如何做到這一點 –
我認爲我們缺少一些代碼會重現問題 –