我在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
{
// ...
}