500错误时如何获取信息

时间:2015-09-23 11:42:53

标签: php guzzle

<?php

$this->client = new \GuzzleHttp\Client;

try {
    $response = $this->client->request('get', $url);
    $result = json_decode($response->getBody());
    Log::save($result);
} catch (RequestException $e) {
    Log::save($e->getMessage());
}

如果目标页面有内部服务器错误500情况,我将收到错误消息Client error: 404,实际上目标页面显示了如果我使用浏览器打开它的bug,我想保存那些要记录的PHP错误消息,但我不知道如何使用Guzzle。

1 个答案:

答案 0 :(得分:0)

有几种不同的方法可以继续:

  1. 如果您使用的是Guzzle 6+并且您使用的是默认值 HandlerStack(创建没有处理程序new \GuzzleHttp\Client()的客户端;默认行为将用于请求 抛出GuzzleHttp\Exception\ServerException例外。在这种情况下,您所要做的就是将请求包装在try / catch块中(如上所示)。
  2. 如果您手动创建自己的 HandlerStack $stack = new \GuzzleHttp\HandlerStack(); $client = new \GuzzleHttp\Client(['handler' => > $stack,]);那么\GuzzleHttp\Middleware::httpErrors中间件还没有加载到堆栈中,你必须将它捕获到你自己的中间件中,或者将一个callable传递给'on_headers'请求选项。
  3. 参考文献:

    1. Guzzle Request Options - http_errors
    2. Guzzle Handlers and Middleware
    3. Guzzle Request Options - on_headers