file_get_contents('https://invalid-certificate.com');
产生以下PHP警告和错误:
PHP警告:同侪证书CN =' * .invalid-certificate.net'与预期的CN =' invalid-certificate.com'
不匹配PHP错误: file_get_contents(https://invalid-certificate.com):无法打开流:操作失败
我想使用异常而不是PHP警告,所以:
$response = @file_get_contents('https://invalid-certificate.com');
if ($response === false) {
$error = error_get_last();
throw new \Exception($error['message']);
}
但现在异常消息是:
file_get_contents(https://invalid-certificate.com):无法打开流:操作失败
正常,error_get_last()
返回上一个错误 ...
如何获得警告,其中包含有关失败的重要信息?
答案 0 :(得分:1)
您可以充分利用 set_error_handler 并将这些错误转换为例外并正确使用例外
<?php
set_error_handler(function($errno, $errstr, $errfile, $errline, array $errcontext) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
});
try {
$response = file_get_contents('https://invalid-certificate.com');
} catch (ErrorException $e) {
var_dump($e); // ofcourse you can just grab the desired info here
}
?>
更简单的版本是
<?php
set_error_handler(function($errno, $errstr) {
var_dump($errstr);
});
$response = file_get_contents('https://invalid-certificate.com');
?>
<强> Fiddle 强>