PHP Curl的行为不像命令行Curl


PHP Curl Not Behaving Like Command Line Curl

我已经通过命令行curl将XML发布到服务器上,我已经完全成功了。我实际设置的唯一选项是将内容类型设置为application/xml的头。

当我在PHP中尝试这个时,我得到了一个500服务器的错误。

至于卷曲选项,我所设置的如下:

curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

我甚至将PHP应用程序的XML输出复制并粘贴到命令行curl中,它运行得很好。我尝试过各种不同组合的其他卷发选项,但没有成功。

如果我不得不猜测有某种编码问题正在发生,但我已经尝试过对数据进行url编码,实际上我收到了一个错误的请求,而不是500。

我完全不知所措,所以如果有人有任何想法,我很想听听。

谢谢!

尝试从修改内容类型选项

curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/xml'));

至:

curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));

值得注意的是,PHP安装的cURL不必与服务器上安装的版本相同。检查CLI($ curl --version)上安装的版本,然后使用类似<?php phpinfo();的东西检查PHP。

问题不是PHP。我没有密切注意服务器输出的错误。由于事务id上的数据库约束,命令行curl每次都在同一位置失败,但实际上显示了预期的输出,这让我认为它工作正常。

使用当前小时、分钟、秒作为事务id的PHP在命令行中超过了故障点,并且出现了null值,这实际上是我的XML的一个问题。问题是,null值是远程服务器上代码中未处理的异常,因此返回的响应让我认为出现了其他问题。

谢谢你的帮助,对这场大雁追逐赛感到抱歉。