get_file_contents失败,包含400个响应代码

时间:2009-10-07 14:53:50

标签: php

我有一个最奇怪的问题。我正在尝试使用get_file_contents在同一台服务器上运行CGI脚本的结果,除了Ubuntu下的本地计算机外,它可以在任何地方运行。

当我要求它从不同的服务器获取url(生产中运行相同的脚本)时,它可以工作,它可以在不同的服务器上部署,我绝对确定我已设置allow_url_fopen。但每当我试图从本地服务器获取该页面时,我在PHP端获得failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request,在Apache错误日志中获得[error] [client 127.0.0.1] request failed: error reading the headers

那么我该怎么办呢,我应该传递哪些标题,以便Apache不会让我失望,或者,我应该调整哪些配置选项以获得相同的结果?

2 个答案:

答案 0 :(得分:0)

您使用什么主机名来引用本地网络服务器?也许你称之为“localhost”,它需要一个真实的域名。

答案 1 :(得分:0)

使用file_get_contents尝试手动强制HTTP headers,就像这样。

<?php
// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
// gave it a mime-type, also forced text plain.
// of course,  add any other headers you need.
    'header'=>"Accept: text/plain\r\n" .
              "Content-Type: application/x-www-form-urlencoded\r\n"
  )
);

// create the stream.
$context = stream_context_create($opts);

// open the file using the HTTP headers set above
$file = file_get_contents("your_url_here", false, $context);
?>

如果这不起作用,您是否考虑过使用cURL来处理您的请求?