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

标签 php laravel ssl guzzle

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

出于测试目的,我创建了带有索引方法的 Controller 来测试对其他 Web 服务器的 Guzzle POST 请求。

我的方法:

<?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 Bad Gateway,但它仅在我尝试发送到 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,

当我尝试使用 GuzzleHTTP 组件将 POST 发送到 HTTPS uri 时,为什么我的网络服务器给我 502 错误网关?

最佳答案

问题是因为在 Laravel 上使用 Bugsnag 错误处理程序

如果更改 Laravel handler.php 文件以使用默认的 laravel 处理程序,则会抛出错误,如果使用 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
{
    // ...
}

关于php - 尝试 POST 到 SSL 安全 URL 时,GuzzleHTTP 会杀死 php-fpm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31428057/

相关文章:

laravel - 在 laravel 中获取类未找到错误

rest - 如何在laravel api客户端上使用模型进行api调用?

php - Laravel 5.2 在同一页面上更新 Eloquent Master Detail

google-app-engine - App Engine 应用程序的自定义域错误地指向 SSL

java - 如何使用 jax-ws 正确构建端点?

php - Centos phpmyadmin 没有作为 PHP 脚本运行

php正则表达式删除mso标签

apache - 具有 apache2 反向代理 ssl 握手的 celery 花对于 websocket 失败

javascript - 如果选中复选框切换,则在切换 div 中创建一个必需的输入字段

php - 通过 jquery 使用 mysql 中的数据更改 opener 文档的值