2009-11-26 89 views
3

我有一個PHP腳本停止處理(它似乎是)在PHP警告。錯誤是一般的「PHP警告:fopen」 - 「無法打開流:沒有這樣的文件或目錄」。PHP腳本停止處理警告錯誤?

PHP應該停在這裏嗎?我只想過致命的錯誤?

有沒有辦法讓它繼續?

+0

你有沒有檢查過你的PHP版本真的救了出警告?嘗試一個只包含'<?php fopen('doesnotexist','rb')的新腳本;回聲',如果你可以讀這個...';' – VolkerK 2009-11-26 10:00:49

+0

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

+0

我在全新安裝時遇到同樣的問題; PHP預處理腳本,當它發出通知時,它將它們轉儲到輸出緩衝區,但顯然不執行任何代碼? – Matth3w 2016-03-03 06:54:29

回答

1

是的,它應該如果error_reporting()水平足夠低。

是的,有。 fopen導致華林,這樣前加 「@」:@fopen(...)

-1

即使繼續,該程序很可能不會按照它的意圖工作。無論如何,嘗試處理異常:

try { 
    # code that may cause an error 
} 
catch(Exception $e) { 
    # do error handling mechanism 
} 
+0

... – mauris 2009-11-26 09:53:47

+0

其實腳本應該繼續,並且可以在沒有該文件的情況下執行 - 我還沒有寫得很好,但是我只是希望它繼續,如果它沒有找到某些文件 – Abs 2009-11-26 09:54:48

0

除了什麼康拉德邁耶已經從PHP手冊中提到:在錯誤

$fres = @fopen('file.ext','w+'); 
if($fres){ 
    // so anything you want with the file 
} 

fopen返回false。當在fopen上抑制錯誤並且不使用if($fres)時,隨後的文件操作函數將發出錯誤,指出$fres不是有效的文件句柄。

2

發出警告,但腳本執行繼續。腳本停止的事實更可能與您之後嘗試執行的處理有關,但與警告本身無關。

以前的建議使用file_exists和is_readable是一個很好的建議。

+0

它也可以是特殊的配置設置。看到我對這個問題的評論。 – 2016-02-19 23:23:21