我有一个最奇怪的问题。我正在尝试使用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不会让我失望,或者,我应该调整哪些配置选项以获得相同的结果?
答案 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
来处理您的请求?