Php 如何修复文件\u获取\u内容警告

Php 如何修复文件\u获取\u内容警告,php,google-checkout,Php,Google Checkout,我在Google checkout gateway处理程序中使用以下代码,但当我测试它时,它显示以下警告: 警告:文件\u获取\u内容(https://checkout.google.com/api/checkout/v2/checkoutForm/Merchant/XXXXXXXXXXX)[function.file get contents]:无法打开流:HTTP请求失败!HTTP/1.0 411第116行/sample.php中要求的长度 我的第116行如下所示: //some more

我在Google checkout gateway处理程序中使用以下代码,但当我测试它时,它显示以下警告:

警告:文件\u获取\u内容(https://checkout.google.com/api/checkout/v2/checkoutForm/Merchant/XXXXXXXXXXX)[function.file get contents]:无法打开流:HTTP请求失败!HTTP/1.0 411第116行/sample.php中要求的长度

我的第116行如下所示:

//some more code//
$ctx = stream_context_create($params);
echo file_get_contents($_googleUrl, false, $ctx);
exit;
有人能帮我吗。

411所需长度

服务器拒绝接受未定义名称的请求 内容长度。如果客户端添加了有效的 内容长度标题字段,包含实体正文的长度 在请求消息中

这可能意味着您没有发送请求中的
内容长度
标题,或者发送的标题不正确。如果不知道
$params
数组的内容,则很难对此进行调试。因此,如果您发送了一个不正确的
内容长度
标题,则需要将其删除,并让PHP自动处理(假设PHP会这样做),或者如果您当前没有发送,则发送一个正确的标题。正如其他人所建议的,cURL可能是一个更可行的选择

另外,进一步研究表明,当您使用POST时,某些服务器(mis)会以这种方式运行,但不提供任何POST变量。因此,如果是这种情况,您可以通过以下两种方法之一解决此问题

  • 使用GET而不是POST(首选)
  • 如果无法使用GET,请在不发送任何POST变量的情况下提供一些伪POST变量

  • 我这里没有你的线索,你能在这里详细说明吗?试着发布
    var_dump($params)的输出不喜欢这样建议,但使用cURL函数可能会更好。他们会为POST请求自动设置。否则,添加头比使用streams API.Yup更简单。只需使用cURL库API。设置HTTPS上下文将省去一些麻烦。(cURL也需要对https进行一些设置,但它似乎至少有更好的文档记录。)