PHP: Stop Notice and Variable Warnings in Error Log Files

Posted on in Categories , , , last updated December 9, 2013

I‘m using PHP error logging in place of error displaying on production web sites. However, I do not want to see error messages about the use of uninitialized variables. I’d like to see all critical errors, except for notices and coding standards warnings. How do I disable error messages?

PHP provides various levels of error reporting using a bit-field as follows:


Error BitPurpose
E_ALLAll errors and warnings (doesn’t include E_STRICT)
E_ERRORFatal run-time errors
E_WARNINGRun-time warnings (non-fatal errors)
E_PARSECompile-time parse errors
E_NOTICE Run-time notices (these are warnings which often result from a bug in your code, but it’s possible that it was intentional (e.g., using an uninitialized variable and relying on the fact it’s automatically initialized to an empty string)
E_STRICTRun-time notices, enable to have PHP suggest changes to your code which will ensure the best interoperability and forward compatibility of your code.
E_CORE_ERRORFatal errors that occur during PHP’s initial startup
E_CORE_WARNINGWarnings (non-fatal errors) that occur during PHP’s initial startup
E_COMPILE_ERRORFatal compile-time errors
E_COMPILE_WARNINGCompile-time warnings (non-fatal errors)
E_USER_ERROR User-generated error message
E_USER_WARNING User-generated warning message
E_USER_NOTICE User-generated notice message

Show only errors

Open /etc/php.ini file
# vi /etc/php.ini

Set error_reporting as follows:

error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR

Alternately, you can show all errors, except for notices and coding standards warnings

error_reporting = E_ALL & ~E_NOTICE

Save and close the file. Restart apache web server:
# /etc/init.d/httpd restart

If you are using nginx/lighttpd, try:
# service nginx reload
# service lighttpd restart

13 comment

  1. I am running my web site on a shared host.
    In my case the /etc/php.ini is not accessible, but they allow me to use local php.ini in each folder.
    Other web hosting companies allow to modify .htaccess, so the alternative solution for this:

    error_reporting = E_ALL & ~E_NOTICE

    when using .htaccess is:

    php_value error_reporting 2039

  2. In the case where you have a shared host, the php.ini file needs to be recursively copied to each folder that will be executing PHP code.
    To automate this process, you can use this script:

    COMPLETE!

  3. You could instead override the values of PHP configuration file “php.ini” inside your code by using the ini_set function , which has two parameters , one of them is the name of the configuration value ” for example ‘display_error’ ” and the other is the value we want to set it to ‘ 0 or 1 as an example for display_error’.

    in this case you don’t even need to restart the httpd , and you don’t affect other websites on a shared host

  4. How to disable notice and warning error without using in PHP.ini file Like(error_reporting = E_ALL & ~E_NOTICE)

    Please let me know if you know any other alternate solutions.

    Thanks
    Mani

  5. very very useful site for me. I am getting lots of linux tips from here. Thank you very much and keep it up in the future too.

  6. very very useful site for me. I am getting lots of linux tips from here. Thank you very much and keep it up in the future too.

  7. copy and paste the below code just after your php opening tag in your code…

    error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
    ini_set(“display_errors”,”off”);

Leave a Comment