Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Turn off warnings and errors on PHP and MySQL

Tags:

php

mysql

I am getting expected notices and warnings and would like to turn them off in my PHP file. The error is:

Warning: fsockopen()

And the notice are:

Notice: A non well formed numeric value encountered in

I am planning to use cron for this PHP script and do not want to get any errors or notices logged anywhere.

like image 252
Ossi Avatar asked Oct 29 '09 18:10

Ossi


People also ask

How do I turn off mysql warnings?

To suppress warnings, set SQL_NOTES=0.

How do I turn off PHP warnings?

Remember, the PHP ini configuration has an error_reporting directive that will be set by this function during runtime. error_reporting(0); To remove all errors, warnings, parse messages, and notices, the parameter that should be passed to the error_reporting function is zero.

How do I ignore PHP errors?

Ignoring Errors PHP allows you to selectively suppress error reporting when you think it might occur with the @ syntax. Thus, if you want to open a file that may not exist and suppress any errors that arise, you can use this: $fp = @fopen($file, $mode);

How do I get rid of errors and warnings?

Steps to remove error and warning messages in PHP:Search for display_error directive. Set the value to Off if you don't want to see any error or warning messages at all. Set the value to On instead to further tune the types of messages to display using error_reporting directive. Search for error_reporting directive.


3 Answers

When you are sure your script is perfectly working, you can get rid of warning and notices like this: Put this line at the beginning of your PHP script:

error_reporting(E_ERROR);

Before that, when working on your script, I would advise you to properly debug your script so that all notice or warning disappear one by one.

So you should first set it as verbose as possible with:

error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

UPDATE: how to log errors instead of displaying them

As suggested in the comments, the better solution is to log errors into a file so only the PHP developer sees the error messages, not the users.

A possible implementation is via the .htaccess file, useful if you don't have access to the php.ini file (source).

# Suppress PHP errors
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0

# Enable PHP error logging
php_flag  log_errors on
php_value error_log  /home/path/public_html/domain/PHP_errors.log

# Prevent access to PHP error log
<Files PHP_errors.log>
 Order allow,deny
 Deny from all
 Satisfy All
</Files>
like image 128
pixeline Avatar answered Oct 16 '22 16:10

pixeline


Prepend functions with the '@' symbol to suppress certain errors, as opposed to turning off all error reporting.

More information: http://php.net/manual/en/language.operators.errorcontrol.php

PHP supports one error control operator: the at sign (@). When prepended to an expression in PHP, any error messages that might be generated by that expression will be ignored.

@fsockopen();
like image 32
Mike B Avatar answered Oct 16 '22 15:10

Mike B


PHP error_reporting reference:

// Turn off all error reporting
error_reporting(0);

// Report simple running errors
error_reporting(E_ERROR | E_WARNING | E_PARSE);

// Reporting E_NOTICE can be good too (to report uninitialized
// variables or catch variable name misspellings ...)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

// Report all errors except E_NOTICE
// This is the default value set in php.ini
error_reporting(E_ALL ^ E_NOTICE);

// Report all PHP errors (see changelog)
error_reporting(E_ALL);

// Report all PHP errors
error_reporting(-1);

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
like image 14
Shankar Prakash G Avatar answered Oct 16 '22 16:10

Shankar Prakash G