Enabling error display in PHP via htaccess only

I am testing a website online.

Right now, the errors are not being displayed (but I know they exist).

I have access to only the .htaccess file.

How do I make all errors to display using my .htaccess file?


I added these lines to my .htaccess file:

php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on 

And the pages now display:

Internal server error

3

5 Answers

.htaccess:

php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on php_flag log_errors on php_value error_log /home/path/public_html/domain/PHP_errors.log 
9
php_flag display_errors on 

To turn the actual display of errors on.

To set the types of errors you are displaying, you will need to use:

php_value error_reporting <integer> 

Combined with the integer values from this page:

Note if you use -1 for your integer, it will show all errors, and be future proof when they add in new types of errors.

1

I feel like adding more details to the existing answer:

# PHP error handling for development servers php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on php_flag log_errors on php_flag ignore_repeated_errors off php_flag ignore_repeated_source off php_flag report_memleaks on php_flag track_errors on php_value docref_root 0 php_value docref_ext 0 php_value error_log /full/path/to/file/php_errors.log php_value error_reporting -1 php_value log_errors_max_len 0 

Give 777 or 755 permission to the log file and then add the code

<Files php_errors.log> Order allow,deny Deny from all Satisfy All </Files> 

at the end of .htaccess. This will protect your log file.

These options are suited for a development server. For a production server you should not display any error to the end user. So change the display flags to off.

For more information, follow this link: Advanced PHP Error Handling via htaccess

1

If you want to see only fatal runtime errors:

php_value display_errors on php_value error_reporting 4 

This works for me (reference):

# PHP error handling for production servers # Disable display of startup errors php_flag display_startup_errors off # Disable display of all other errors php_flag display_errors off # Disable HTML markup of errors php_flag html_errors off # Enable logging of errors php_flag log_errors on # Disable ignoring of repeat errors php_flag ignore_repeated_errors off # Disable ignoring of unique source errors php_flag ignore_repeated_source off # Enable logging of PHP memory leaks php_flag report_memleaks on # Preserve most recent error via php_errormsg php_flag track_errors on # Disable formatting of error reference links php_value docref_root 0 # Disable formatting of error reference links php_value docref_ext 0 # Specify path to PHP error log php_value error_log /home/path/public_html/domain/PHP_errors.log # Specify recording of all PHP errors # [see footnote 3] # php_value error_reporting 999999999 php_value error_reporting -1 # Disable max error string length php_value log_errors_max_len 0 # Protect error log by preventing public access <Files PHP_errors.log> Order allow,deny Deny from all Satisfy All </Files> 

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like