2

我有一行代码

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

我在这里想念什么?

4

2 回答 2

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
于 2013-10-01T12:48:20.117 回答
1

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

set_error_handler(function(){return true;});
stream_socket_client($target, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT);
restore_error_handler();
于 2013-10-01T13:08:12.763 回答