2013-10-01 247 views
0

我有一个行代码抑制stream_socket_client警告

$result = stream_socket_client($target, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT); 

抛出一个警告,如果连接不成功

WARNING: stream_socket_client(): Failed to enable crypto 

我需要取消此警告。加@使线看起来

$result = @stream_socket_client($target, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT); 

没有帮助。 PHP似乎忽略了@

我在这里错过了什么?

回答

5

这不是很好的解决方案,但你可以禁用一会儿警告消息:

$oldErrorReporting = error_reporting(); // save error reporting level 
error_reporting($oldErrorReporting^E_WARNING); // disable warnings 
$result = stream_socket_client($target, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT); 
error_reporting($oldErrorReporting); // restore error reporting level 
+0

工作正常,找到了解决办法,但我想出了一个更清晰选项。我添加了一个新的答案 –

1

使用自定义错误处理程序

set_error_handler(function(){return true;}); 
stream_socket_client($target, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT); 
restore_error_handler(); 
+0

也是很好的解决方案,但请记住,设置内部配置值比将脚本范围的错误处理程序更改为新的匿名回调要快得多:) –

+0

好评,谢谢 –