2014-09-23 40 views
-4

我有一些PHP下載腳本。它的最後兩行有這些:控制操作員被誤用

header("Content-Length: ". @filesize($filename)); 
@readfile($filename); 

NetBeans的警告在兩條線「的錯誤控制操作員誤用」。我可以忽略這個警告嗎?或者我該如何解決?

+1

您知道這些行中實際做了什麼@符號嗎? – Lix 2014-09-23 08:15:30

+0

是的,我閱讀了關於它的PHP文檔,但我不知道PHP中的異常或東西。所以ClémentMalet的回答觸及了靶心。 – Vadammt 2014-09-23 09:17:49

回答

4

由於您已經忽略了@的PHP警告,我想您也可以忽略NetBeans警告。

更嚴重的是,你當然應該解決這個問題:

  • 刪除所有這些@警告抑制器背後你的函數調用
  • 手柄或避免這些功能的錯誤正確:檢查是否$filename存在,如果你在嘗試讀取大小和輸出其內容之前,有權讀取它們
+0

我希望能回答這個問題,但如果它是正確的,我們並不確定。謝謝。 – Vadammt 2014-09-23 09:13:58

+1

建議存儲並檢查'readfile'的返回值。 文件名和/或權限可能會在檢查和'readfile'之間改變。 – orgasmix 2015-09-23 12:41:34

+0

這裏的問題是open_basedir設置。沒有辦法可以檢查文件是否在允許的basedir(或者至少我不知道它)內沒有@操作符,自定義error_handlers或手動解析ini_settings。 @運營商是這裏最好的解決方案。 – 2017-01-04 12:27:42