如何讓php在PRG(POST-Redirect-GET)段內發生非致命錯誤時停止,以便您可以看到錯誤消息,而沒有用於重定向的後續頭(()用於清除錯誤消息?在PHP中調試PRG - 如何獲取錯誤顯示?
例Caller.htm
<form method="post" action="Callee.php">
<input type="text" name="PostData" />
<input type="submit" value="Go" />
</form>
例Callee.php:
<?php
// POST section:
if($_POST) {
$var = $x; // non-fatal error: $x is missing.
header("Location: ". $_SERVER['REQUEST_URI']. 'Query'); die; // Redirect & GET
}
// GET section
// ...
什麼情況是,在測試時,PHP報告失蹤$ X錯誤,但隨後不斷移動,擊中標題()並丟棄錯誤輸出,所以你永遠不會在屏幕上看到錯誤信息。
您可以暫時將die;
(或exit;
)放在標題之前,或將標題註釋掉以測試代碼。然後,當代碼正在工作時,請取出die;
或將標題放回。但是,在開發過程中,這種方法並不能很好地工作,因爲我發現有很多次我錯誤地發現了一個我甚至不知道的錯誤。
有時您可以將標題向上移動到可能發生錯誤的位置。但是,在更一般的情況下,需要能夠將查詢字符串傳遞給GET部分,因此頭部必須位於POST部分的底部。
我想這可能是PHP調用E_WARNING,「運行時警告(非致命錯誤)。腳本執行沒有停止。」,但我不確定。
我運行5.4.23:
error_reporting = E_ALL | E_STRICT
display_errors = "On"
log_errors = "On"
ignore_repeated_errors = "Off"
[全部,我試圖刪除。傑克有以下答案。]
你的意思是PRG(郵政,重定向,獲取)呢? –
你的意思是RPG(火箭推進手雷)......你可以寫信給一個文件,日誌,電子郵件等。看看@ http://www.php.net/manual/en/function.error-log.php –
@RonniSkansing你打那個兄弟:D – Vainglory07