抑制stream_socket_client警告

时间:2013-10-01 12:35:07

标签: php error-handling

我有一行代码

$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似乎忽略了@

我在这里缺少什么?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

使用自定义错误处理程序找到解决方案

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