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);
ini_set('display_errors', 0);
with no luck.
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 :)
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.
Use phpinfo to find the loaded php.ini and edit it to hide errors. It overrides what you put in your script.
Is set_error_handler()
used anywhere in your script? This overrides error_reporting(0)
.
Use log_errors for them to be logged instead of displayed
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
Pragmatically, don't write files with syntax errors :)
To ensure there's no syntax errors in your file, run the following:
php -l YOUR_FILE_HERE.php
This will output something like this:
PHP Parse error: syntax error, unexpected '}' in Connection.class.php on line 31
Just add the below code in your index.php file:
ini_set('display_errors', False);
来源:https://stackoverflow.com/questions/78296/what-are-the-reasons-why-php-would-echo-errors-even-with-error-reporting0