2013-10-01 502 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

好評,謝謝 –