Home » Mysql » Turn off warnings and errors on php/mysql

Turn off warnings and errors on php/mysql

Posted by: admin November 1, 2017 Leave a comment


I am getting expected notices and warnings and would like to turn them off on my php file. errors are:

Warning: fsockopen()

and notices 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.


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:


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).

# supress 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


Prepend functions with the ‘@’ symbol to suppress certain errors, As opposed to turning off ALL error reporting.

More Info: 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.



Always show errors on testing server. Never show errors on production server.

Write a script to determine whether the page is on a local, testing, or live server, and set $state to “local”, “testing”, or “live”. Then:

if( $state == "local" || $state == "testing" )
 ini_set( "display_errors", "1" );
 error_reporting( E_ALL & ~E_NOTICE );
 error_reporting( 0 );


PHP error_reporting reference:

// Turn off all error reporting

// 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)

// Report all PHP errors

// Same as error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);


you can set the type of error reporting you need in php.ini or by using error_reporting() function on top of your script.


If you can’t get to your php.ini file for some reason, disable errors to stdout (display_errors) in a .htaccess file in any directory by adding the following line:

php_flag display_errors off

additionally, you can add error logging to a file:

php_flag log_errors on