Turn off warnings and errors on PHP and MySQL

前端 未结 6 1298
北荒
北荒 2020-11-27 11:30

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 notic

相关标签:
6条回答
  • 2020-11-27 12:07

    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();
    
    0 讨论(0)
  • 2020-11-27 12:13

    Always show errors on a testing server. Never show errors on a 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 );
    }
    else
    {
        error_reporting( 0 );
    }
    
    0 讨论(0)
  • 2020-11-27 12:16

    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>
    
    0 讨论(0)
  • 2020-11-27 12:18

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

    0 讨论(0)
  • 2020-11-27 12:30

    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

    0 讨论(0)
  • 2020-11-27 12:31

    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);
    
    0 讨论(0)
提交回复
热议问题