2011-03-17 38 views
0

我對PHP很陌生。我有一個行的在服務器端腳本代碼,打開一個文件:如何通過phplint正確處理PHP中的錯誤

$fh = fopen($myFile, 'r');

當我運行通過phplint這段代碼,它給我的通知:

   $fh = fopen($myFile, 'r'); 
          \_ HERE 
==== 19: notice: unhandled error(s): E_WARNING 

我試圖創建一個以前的錯誤處理程序,並專門設置它來處理E_WARNING這樣的:

set_error_handler("errorHandler", E_WARNING);

但我得到了相同的通知。我想正確地做到這一點。是否有其他一些機制來處理phplint認爲正確的錯誤?

+1

你可以在做fopen()之前運行file_exists() – JohnP 2011-03-17 17:03:56

+0

@JohnP對,但是'phplint'不會注意到在這種情況下錯誤永遠不會觸發。這是否意味着忽略來自phplint的那些警告是合理的? (對不起,如此簡單)。 – Rich 2011-03-17 18:08:15

+0

我在想我自己。我不使用PHPlint,所以我不知道。在打開它之前檢查文件是否存在應該足以在99.9%的用例中停止錯誤。你也可以使用'is_readable',一箭雙鵰殺死兩隻鳥,可以這麼說 – JohnP 2011-03-17 18:10:52

回答

3

PHPLint警告表明,如果發生錯誤情況,函數(在本例中爲fopen)被記錄爲「引發」E_WARNING。

如果發生這種情況,那麼您可能會在控制檯或屏幕上顯示錯誤消息。大多數程序員不想在生產代碼中這樣做,並通過添加@來抑制此警告或更改php.ini(error_reporting)來消除錯誤。

PHPLint只是提醒你,你沒有添加@。林特想你的代碼更喜歡:

$fh = @fopen($myFile, 'r'); 
// check $fh here 

顯然增加了file_exists()或is_readable()調用不會沉默PHPLint之前。

編號:http://www.icosaedro.it/phplint/manual.html?p=errors

編號:http://php.net/manual/en/function.fopen.php 「如果打開失敗,會產生一個E_WARNING級的錯誤你可以用@來禁止這種警告」

0

您可以用沉默的@fopen錯誤,然後檢查,看看如果返回值=== FALSE來代替。

相關問題