Sling Academy
Home/PHP/PHP: How to Enable/Disable Error Reporting (3 Ways)

PHP: How to Enable/Disable Error Reporting (3 Ways)

Last updated: January 10, 2024

Introduction

Error reporting is an essential aspect of PHP development that allows you to see the errors in your code. Properly configuring error reporting can help you debug your code during development and also suppress errors when deploying your application to production. Throughout this guide, we will explore the reasons behind PHP errors and several methods to enable or disable error reporting.

Understanding PHP Errors

Errors in PHP can arise due to various reasons, including syntax mistakes, misconfiguration of server settings, resource constraints, or failure to handle exceptional conditions in the code. They can be broadly categorized into parse errors, fatal errors, warnings, and notices, each indicating a different level of severity.

Solution 1: Using the error_reporting() Function

One of the most common ways to enable or disable error reporting is by using the error_reporting() function. You can set the desired level of error reporting using this function by passing in predefined constants as arguments.

  • Step 1: Decide on the error reporting level you wish to set. For example, to report all errors except notices and warnings, you would use E_ALL & ~E_NOTICE & ~E_WARNING.
  • Step 2: Call the error_reporting() function at the very start of your script to apply it.

Example:

<?php
// Report all errors except E_NOTICE and E_WARNING
error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING);

// Rest of your PHP code...
?>

The web server will not show notices and warnings, but all other errors will be displayed.

Notes: Using this function allows for flexibility in development and production environments. One limitation to keep in mind is that this setting will only affect the script that it is called in.

Solution 2: Modifying php.ini File

The php.ini file controls the configuration for all PHP scripts running on the server. Updating the file can set the error reporting level for all scripts, which is useful in production environments.

  • Step 1: Locate your php.ini file. This file’s location can vary depending on your server setup.
  • Step 2: Open the php.ini file in a text editor with appropriate permissions to modify the file.
  • Step 3: Find the line that starts with error_reporting, and set the desired level (ex: error_reporting=E_ALL & ~E_NOTICE & ~E_WARNING).
  • Step 4: Restart your web server for the changes to take effect.

Notes: Editing the php.ini file applies changes globally to all PHP scripts. It requires server access, which may not be available in shared hosting environments. Always ensure that error reporting is turned off or set to log errors only in a production environment to avoid security risks or exposing sensitive information.

Solution 3: Runtime Configuration with .htaccess

For those using Apache as their web server, the .htaccess file offers a way to set PHP configurations at runtime without the need to restart the server. It only affects the directory in which the .htaccess file is located and its subdirectories.

  • Step 1: Locate or create a .htaccess file in the root directory of your PHP application.
  • Step 2: Add the directive php_value error_reporting [value], where [value] is the level you want to set.

Here’s how it looks:

# Disable PHP error reporting
ter_reporting(0)'>php_value error_reporting 0

# Enable reporting of all errors except notices and warnings
ter_reporting(0)'>php_value error_reporting 30711

Notes: This method is specific to the Apache web server and requires .htaccess processing to be enabled. Some hosting providers may limit the use of .htaccess overrides for security and performance reasons.

Conclusion

In this guide, we have explored several solutions for managing PHP error reporting. Enabling error reporting is an invaluable tool during development, while disabling it is recommended for production. Always remember to review your settings regularly and adjust as your application transitions between different environments.

Next Article: PHP: How to Enable/Disable Warnings and Notices

Previous Article: PHP: Where is the error log file located?

Series: Basic PHP Tutorials

PHP

You May Also Like

  • Pandas DataFrame.value_counts() method: Explained with examples
  • Constructor Property Promotion in PHP: Tutorial & Examples
  • Understanding mixed types in PHP (5 examples)
  • Union Types in PHP: A practical guide (5 examples)
  • PHP: How to implement type checking in a function (PHP 8+)
  • Symfony + Doctrine: Implementing cursor-based pagination
  • Laravel + Eloquent: How to Group Data by Multiple Columns
  • PHP: How to convert CSV data to HTML tables
  • Using ‘never’ return type in PHP (PHP 8.1+)
  • Nullable (Optional) Types in PHP: A practical guide (5 examples)
  • Explore Attributes (Annotations) in Modern PHP (5 examples)
  • An introduction to WeakMap in PHP (6 examples)
  • Type Declarations for Class Properties in PHP (5 examples)
  • Static Return Type in PHP: Explained with examples
  • PHP: Using DocBlock comments to annotate variables
  • PHP: How to ping a server/website and get the response time
  • PHP: 3 Ways to Get City/Country from IP Address
  • PHP: How to find the mode(s) of an array (4 examples)
  • PHP: Calculate standard deviation & variance of an array