GuzzleHTTP在尝试POST到SSL安全URL时杀死php-fpm


GuzzleHTTP kills php-fpm when trying to POST to SSL secured URL

我在Laravel环境中使用Guzzle 6.0.2(也尝试过5.3.0)。

为了测试的目的,我创建了一个带有索引方法的控制器来测试Guzzle POST请求到其他web服务器。

我的方法:

<?php
public function index()
{
    $uri = 'https://payment.my-url.com/gw/testing';
    // $uri = 'http://pay.my-url.com/gw/testing';
    $client = new 'GuzzleHttp'Client();
    $resource = $client->post($uri, [
        'json' => ['foo' => 'bar'],
        'headers' => [
            'Accept' => '*/*; q=0.5, application/xml',
            'Content-Type' => 'application/json; charset=utf-8',
            'User-Agent' => 'Client/1.0',
        ],
    ]);
     $statusCode = $resource->getStatusCode();
}

当我尝试使用此方法访问URL时,我从服务器收到502坏网关,但只有当我试图发送到HTTPS $uri时才会发生。如果我发送到HTTP(非安全)uri,那么我的请求将转到国外web服务器,在那里我可以转储POST数据数组。

我在OSX环境下安装了nginx 1.8.0和PHP 5.6.9

我还尝试添加额外的配置到guzzle客户端,但这没有任何区别:

'curl' => [
    CURLOPT_SSL_VERIFYHOST => false,
    CURLOPT_SSL_VERIFYPEER => false,
],
'verify' => false,

为什么我的web服务器给我502坏网关当我试图发送POST到HTTPS uri与GuzzleHTTP组件?

问题是由于在Laravel上使用Bugsnag错误处理程序

如果更改Laravel handler.php文件使用默认的Laravel handler,则抛出错误,如果使用Busnag错误处理程序,则nginx以502错误结束,并且没有错误报告到Bugsnag或Web日志

文件示例:

<?php namespace Payrex'Exceptions;
use Exception;
use Illuminate'Foundation'Exceptions'Handler as ExceptionHandler;
// use Bugsnag'BugsnagLaravel'BugsnagExceptionHandler as ExceptionHandler;
class Handler extends ExceptionHandler
{
    // ...
}