Home  >  Article  >  Backend Development  >  Learn the usage of error_reporting

Learn the usage of error_reporting

WBOY
WBOYOriginal
2016-07-25 09:11:481060browse

You must be very aware of the frequency of use of error_reporting in PHP programming. This article introduces the usage of error_reporting for your reference. If the parameter level is not specified, the current error level will be returned. The following are possible values ​​for level: 1E_ERROR 2 E_WARNING 4E_PARSE 8 E_NOTICE 16 E_CORE_ERROR 32 E_CORE_WARNING 64 E_COMPILE_ERROR 128 E_COMPILE_WARNING 256 E_USER_ERROR 512 E_USER_WARNING 1024 E_USER_NOTICE 2047 E_ALL 2048 E_STRICT E_NOTICE means that the normal situation is not recorded, and is only used when the program has an error, such as trying to access a non-existent variable, or calling the stat() function to view a non-existent file. E_WARNING is usually displayed but does not interrupt program execution. This is useful for debugging. For example: calling ereg() with the problematic regular notation. E_ERROR is usually displayed and will interrupt program execution. This means that memory configuration or other errors cannot be traced using this mask. E_PARSE Parses errors from the syntax. E_CORE_ERROR Like E_ERROR, but excludes errors caused by the PHP core. E_CORE_WARNING Like E_WARNING, but does not include PHP core error warnings.

PHP Error Report

There are many configuration settings in the php.ini file. You should have already set up your php.ini file and placed it in the appropriate directory, as shown in the documentation for installing PHP and Apache 2 on Linux. There are two configuration variables that you should be aware of when debugging PHP applications. Here are the two variables and their default values: display_errors = Off error_reporting = E_ALL

The current default values ​​of these two variables can be discovered by searching for them in the php.ini file. The purpose of the display_errors variable is obvious - it tells PHP whether to display errors. The default value is Off. However, to make the development process easier, set this value to On: display_errors = On

The default value of error_reporting variable is E_ALL. This setting will show everything from bad coding practices to harmless tips to errors. E_ALL is a bit too granular for development purposes, as it also displays hints on the screen for small things (such as variables not being initialized), which messes up the browser's output. I only want to see errors and bad coding practices, but not harmless tips. So, please replace the default value of error_reporting with the following value: error_reporting = E_ALL & ~E_NOTICE

Restart Apache and you’re all set. Next, you'll learn how to do the same thing on Apache.

Error reporting on the server relies on what Apache is doing, turning on error reporting in PHP may not work since there may be multiple PHP versions on the machine. Sometimes it's difficult to tell which PHP version Apache is using because Apache can only look at one php.ini file. Not knowing which php.ini file Apache is using to configure itself is a security issue. However, there is a way to configure PHP variables in Apache so that the correct error level is set.

Also, it's good to know how to set these configuration variables on the server side to override or preempt the php.ini file, thus providing a higher level of security.

When configuring Apache, you should have already touched the basic configuration in the http.conf file in /conf/httpd.conf.

To do what you have already done in the php.ini file, add the following lines to httpd.conf, overwriting any php.ini files: php_flag display_errors on php_value error_reporting 2039 This overrides the flag already set in the php.ini file for display_errors, as well as the value of error_reporting. The value 2039 represents E_ALL & ~E_NOTICE. If you prefer to use E_ALL, set the value to 2047. Again, you still need to restart Apache.

Next, test error reporting on the server.

Regarding the error_reporting() function, it can shield some error messages, but errors caused by the PHP core cannot be shielded, because errors caused by the PHP core will directly cause the PHP file compilation to fail, because the writing format does not follow PHP's Errors caused by coding rules cannot be blocked.

  1. * For now, avoid warnings of E_STRICT mode
  2. * (this must be done before function definitions)
  3. */
  4. if (defined('E_STRICT')) {
  5. $old_error_reporting = error_reporting(0);
  6. if ($old_error_reporting & E_STRICT) {
  7. error_reporting($old_error_reporting ^ E_STRICT);
  8. } else {
  9. error_reporting($old_error_reporting);
  10. }
  11. unset($old_error_reporting);
Copy code

Common ones are as follows:

  1. // Turn off all error reporting; Turn off all errors
  2. error_reporting(0);
  3. // Report simple running errors; Report a simple running error
  4. error_reporting(E_ERROR | E_WARNING | E_PARSE);
  5. // Reporting E_NOTICE can be good too (to report uninitialized
  6. // variables or catch variable name misspellings…); including reporting some uninitialized variables or catching variable name misspellings
  7. error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE) ;
  8. // Report all errors except E_NOTICE
  9. // This is the default value set in php.ini; Report all errors except E_NOTICE
  10. error_reporting(E_ALL ^ ​​E_NOTICE);
  11. // Report all PHP errors (bitwise 63 may be used in PHP 3);Report all errors
  12. error_reporting(E_ALL);
  13. // Same as error_reporting(E_ALL); Same as above
  14. ini_set('error_reporting', E_ALL);
Copy code


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn