closures在php / mysql的警告和错误

我得到预期的通知和警告,并希望closures我的PHP文件。 错误是:

Warning: fsockopen() 

通知是:

 Notice: A non well formed numeric value encountered in 

我打算使用这个PHP脚本的cron,并不想得到任何错误或任何地方login。

当你确定你的脚本是完美的工作,你可以摆脱警告和这样的通知:把这一行在你的PHP脚本的开始:

 error_reporting(E_ERROR); 

在此之前,在处理你的脚本时,我会build议你正确地debugging你的脚本,使所有的通知或警告一个一个地消失。 所以你应该首先把它设置得尽可能详细:

 error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); 

更新:如何logging错误,而不是显示他们正如在评论中所build议的,更好的解决scheme是将错误logging到一个文件,所以只有PHP开发人员看到错误信息,而不是用户。 一个可能的实现是通过.htaccess文件,如果你没有访问php.ini文件( 源代码 ),这个文件很有用。

 # 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 </Files> 

使用'@'符号来预置函数来抑制某些错误,而不是closures所有的错误报告。

更多信息: http : //php.net/manual/en/language.operators.errorcontrol.php

PHP支持一个错误控制运算符:at符号(@)。 当在PHP中添加expression式时,可能会由该expression式生成的任何错误消息都将被忽略。

@fsockopen();

总是在testing服务器上显示错误。 切勿在生产服务器上显示错误。

编写脚本以确定页面是在本地,testing还是在线服务器上,并将$ state设置为“local”,“testing”或“live”。 然后:

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

PHP的error_reporting参考:

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

您可以在php.ini中设置所需的错误报告types,或者在脚本的顶部使用error_reporting()函数。

如果出于某种原因无法访问php.ini文件,请通过添加以下行来禁用任何目录中的.htaccess文件中的stdout( display_errors )错误:

php_flag display_errors off

另外,您可以将错误日志logging添加到文件中:

php_flag log_errors on