AWSApp1Live(运行PHP 5.5的64位Amazon Linux 2015.03 v1.4.6)
AWSApp1Test(运行PHP 5.6的64位Amazon Linux 2015.03 v1.3.2)
AWSApp2Live(运行PHP 5.6的64位Amazon Linux 2016.09 v2.3.2)
AWSApp2Test(运行PHP 5.5的64位Amazon Linux 2015.09 v2.0.4)
LocalApp1(运行XAMPP控制面板v3.2.1的Windows 10)
我有两个PHP应用程序:PHP App1和PHP App2,它们通过使用内部POST请求相互通信来协同工作。 PHP App1使用
发送请求$query = http_build_query($data);
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded' . PHP_EOL .
'Cv-Forwarded-For: ' . $_SERVER["REMOTE_ADDR"] . PHP_EOL,
'content' => $query,
),
'ssl'=>array(
'verify_peer'=>false,
'verify_peer_name'=>false
)
));
$response = @file_get_contents(
$target = $this->api_target.$action,
$use_include_path = false,
$context
);
PHP App2正在运行RESTful API服务,该服务响应从PHP App1发送的请求。响应是JSON字符串。
如上所述,我已将这些PHP应用程序加载到四个不同的AWS实例上。请求/响应的以下组合
AWSApp1Live 与 AWSApp2Live进行沟通
(HTTP/1.1 400 Bad Request)
AWSApp1Test 与 AWSApp2Live进行沟通
(HTTP/1.1 400 Bad Request)
AWSApp1Test 与 AWSApp2Test进行沟通
(HTTP/1.1 200 OK)
LocalApp1 与 AWSApp2Live 进行通信
(HTTP/1.1 200 OK)
正如您所看到的,PHP App2加载到 AWSApp2Test 并从 AWSApp1Test 发送请求时,它会响应(HTTP / 1.1 200 OK)。但是,当加载到 AWSApp2Live 并从 AWSApp1Live 或 AWSApp1Test 发出相同请求时,它会响应(HTTP / 1.1 400错误请求)。唯一一次 AWSApp2Live 响应(HTTP / 1.1 200 OK)是从 LocalApp1 发送请求的时间。
我们认为可能与 AWSApp2Live 软件配置上的Zlib输出压缩设置有关,但响应仍然相同。
我们已经从 LocalApp1 服务器和 AWSApp2Test 服务器上为 AWSApp2Live 服务器完成了nslookup,并且他们返回相同的IP地址以排除任何DNS问题
我们通过SSH进入 AWSApp1Test 服务器并为 AWSApp2Live 服务器上的其中一个API命令执行wget,然后我们返回了一个JSON响应意味着它正在到达该服务器上的PHP应用程序。
AwsApp2Live 服务器上没有生成任何日志,以便我了解服务器将某些请求视为错误请求而其他请求不是。
使用邮递员(https://www.getpostman.com/)我能够在 AWSApp2Live 上成功与API通信,以便应用程序按预期运行。
我们不确定在哪里寻找有关可能发生的事情的任何进一步线索。如果您需要任何进一步的信息,请告诉我们。非常感谢你。
答案 0 :(得分:1)
documentation中没有任何内容,但我认为标题只有在其中只有一个字符串时才会作为字符串传递。否则使用数组:
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => array(
'Content-Type: application/x-www-form-urlencoded',
'Cv-Forwarded-For: ' . $_SERVER["REMOTE_ADDR"]
),
'content' => $query,
),
'ssl'=>array(
'verify_peer'=>false,
'verify_peer_name'=>false
)
));