如何获取file_get_contents()警告而不是PHP错误?

时间:2015-03-02 04:53:56

标签: php

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()返回上一个错误 ...

如何获得警告,其中包含有关失败的重要信息?

1 个答案:

答案 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