user2223377
user2223377

Reputation: 73

logs php error but not display it in browser

i want to create the error logs but not to display it in browser.

Currently when an error or warning/notice is occurs, then logs is created and error is displayed to the browser but i want to force the system to not show the error message in browser to the site visitor but create the logs for me.

Thanks

Upvotes: 5

Views: 5332

Answers (5)

user4035
user4035

Reputation: 23729

Add this to the top of your script:

//don't display errors
ini_set('display_errors', 0);
//write errors to log
ini_set('log_errors', 1);
//error log file name
ini_set('error_log', '/var/log/php/error.log');

error_reporting(E_ALL);

Upvotes: 6

Brian C
Brian C

Reputation: 867

In case someone is looking for how to do this in 2023 onwards, this is a quick note to say that all the ini_set() answers will only work in runtime from the time they are executed onwards.

This means that errors generated during file parse may still be sent to the browser, and of course those are probably the most common errors.

The usual fix for this varies widely depending on your version of PHP and how it is called; but it's always a variation of a file containing php settings; for instance, a php.ini. You could add this fragment to such a php.ini file:

display_errors = Off
log_errors = On

This would suppress browser errors while enabling logging to a file. You may also need to add the line error_log = error_log

Upvotes: 0

maximkou
maximkou

Reputation: 5332

If you want log custom errors:

try {
    // your code here
} catch (Exception $e){
    error_log($e->getMessage(), $e->getCode(), $e->getFile().' Line '.$e->getLine());
}

else use user4035 way.

Upvotes: 0

Roman Newaza
Roman Newaza

Reputation: 11690

Make sure you have something like this in your php.ini:

display_errors = Off
error_log = /var/log/php/error.log # Assuming you have /var/log/php directory and it's writable by httpd
error_reporting = E_ALL & ~E_DEPRECATED

Or set them as run-time options with ini_set()

Upvotes: 6

chandresh_cool
chandresh_cool

Reputation: 11830

May be try

error_reporting(E_ERROR | E_PARSE);

Upvotes: 0

Related Questions