Error logging php - error_reporting(0) not having

2020-06-23 22:23发布

问题:

I've got a pretty simple page which fetches a url and parse some data.

I have built into my page some error handling in the event that the response is a 404 error.

However, I can't seem to stop php from spitting out the following errors

 Warning: file_get_contents(http://url-to-retrieve.com/123.html) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in /var/www/html/maickl/procs/get.php on line 84

Notice: Undefined offset: 0 in /var/www/html/maickl/procs/get.php on line 91

I start the page with

error_reporting(0)

Any suggestions as to why this is happening, why these errors are not being suppressed (it seems to be only on this page), and what I can do about it?

回答1:

Using error_reporting(0); shoud disable error reporting, which means you should not get that error -- are you sure it's not re-enabled somewhere ?


But what you are probably looking for, actually, is not to change error_reporting, but to disable display_errors, which can be done using some code like this one :

ini_set('display_errors', 'Off');

With this :

  • errors / warnings will not be displayed on your website, which is nice for end-users (technical errors should never be displayed)
  • but error_reporting is not disabled, which means errors can/will still be logged -- see log_errors and error_log.


回答2:

Also remember that if you have set a user defined error handler function, then error_reporting() settings are completely ignored.



回答3:

Turning off error reporting is one way of doing it, but I would suggest simply fixing the error or adding appropriate error handling.

try {
     //try to do the following
     $content = file_get_contents('file/to/try.txt');
} catch (Exception $e) {
     //do this in case of an error
     die($e->getMessage());
}