500出错时如何获取信息


How to get information when 500 error

<?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,实际上目标页面已经显示了错误是什么,如果我使用浏览器打开它,我想保存这些PHP错误消息的日志,但我不知道如何得到当使用Guzzle

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

  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中间件没有被加载到堆栈中,你将不得不在你自己的中间件中捕获它,或者通过传递一个可调用的'on_headers'请求选项。

引用:

  1. Guzzle请求选项- http_errors
  2. Guzzle Handlers and Middleware
  3. Guzzle请求选项- on_headers