我有一個PHP腳本停止處理(它似乎是)在PHP警告。錯誤是一般的「PHP警告:fopen」 - 「無法打開流:沒有這樣的文件或目錄」。PHP腳本停止處理警告錯誤?
PHP應該停在這裏嗎?我只想過致命的錯誤?
有沒有辦法讓它繼續?
我有一個PHP腳本停止處理(它似乎是)在PHP警告。錯誤是一般的「PHP警告:fopen」 - 「無法打開流:沒有這樣的文件或目錄」。PHP腳本停止處理警告錯誤?
PHP應該停在這裏嗎?我只想過致命的錯誤?
有沒有辦法讓它繼續?
不知道如何繼續的錯誤,但更好的事情是錯誤的預防擺在首位:
'is_readable'和'is_writable'在Windows系統上被破壞得很厲害,我認爲它也是在ACL上。僅在PHP 5中使用 – 2009-11-26 09:54:46
是的,它應該如果error_reporting()水平足夠低。
是的,有。 fopen
導致華林,這樣前加 「@」:@fopen(...)
As noted on the php documentation page,
如果打開失敗,會產生一個E_WARNING級的錯誤。您可以使用@來抑制此警告。
除了什麼康拉德邁耶已經從PHP手冊中提到:在錯誤
$fres = @fopen('file.ext','w+');
if($fres){
// so anything you want with the file
}
fopen
返回false。當在fopen上抑制錯誤並且不使用if($fres)
時,隨後的文件操作函數將發出錯誤,指出$fres
不是有效的文件句柄。
發出警告,但腳本執行繼續。腳本停止的事實更可能與您之後嘗試執行的處理有關,但與警告本身無關。
以前的建議使用file_exists和is_readable是一個很好的建議。
它也可以是特殊的配置設置。看到我對這個問題的評論。 – 2016-02-19 23:23:21
你有沒有檢查過你的PHP版本真的救了出警告?嘗試一個只包含'<?php fopen('doesnotexist','rb')的新腳本;回聲',如果你可以讀這個...';' – VolkerK 2009-11-26 10:00:49
OP是正確的,PHP不會停止報告或顯示警告。唯一的配置,除了使用特殊的處理程序,請參閱http://stackoverflow.com/questions/10520390/stop-script-execution-upon-notice-warning,我知道這可以做到這一點與Xdebug。如果你安裝了xdebug模塊,並且'xdebug.halt_level'包含'E_WARNING',那麼PHP將停止系統警告。當然,我們想刪除警告,但系統不應該停止它們,除非我們想要。所以,答案是OP應該檢查他的配置設置。 – 2016-02-19 23:15:41
我在全新安裝時遇到同樣的問題; PHP預處理腳本,當它發出通知時,它將它們轉儲到輸出緩衝區,但顯然不執行任何代碼? – Matth3w 2016-03-03 06:54:29