views:

697

answers:

4

What are some reasons why php would force errors to show, no matter what you tell it to disable?

I have tried error_reporting(0) and ini_set('display_errors',0) with no luck.

+3  A: 

Note the caveat in the manual at http://uk.php.net/error_reporting:

Most of E_STRICT errors are evaluated at the compile time thus such errors are not reported in the file where error_reporting is enhanced to include E_STRICT errors (and vice versa).

If your underlying system is configured to report E_STRICT errors, these may be output before your code is even considered. Don't forget, error_reporting/ini_set are runtime evaluations, and anything performed in a "before-run" phase will not see their effects.


Based on your comment that your error is...

Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';' in /usr/home/REDACTED/public_html/dev.php on line 11

Then the same general concept applies. Your code is never run, as it is syntactically invalid (you forgot a ';'). Therefore, your change of error reporting is never encountered.

Fixing this requires a change of the system level error reporting. For example, on Apache you may be able to place...

php_value error_reporting 0

in a .htaccess file to suppress them all, but this is system configuration dependent.

Pragmatically, don't write files with syntax errors :)

Adam Wright
A: 

Use log_errors for them to be logged instead of displayed

Vinko Vrsalovic
<?phpini_set('error_log','/error_log');ini_set('log_errors',TRUE);echo "test"$test = "123";?>Still causes the same error, unfortunately. I'm looking for a way to do this without modifying php.ini. Is that possible?
Valdemarick
A: 

To prevent errors from displaying you can

  • Write in a .htaccess: php_flag display_errors 0
  • Split your code in separate modules where the main (parent) php-file only sets the error_logging and then include() the other files.
Wimmer
A: 

If the setting is specified in Apache using php_admin_value it can't be changed in .htaccess or in runtime. See: http://docs.php.net/configuration.changes

troelskn