如何修复php警告:file_get_contents?无法打开流:HTTP请求失败

时间:2012-10-09 02:15:57

标签: php file-get-contents

如何修复php警告:file_get_contents?

Warning: file_get_contents(http://192.168.1.254:9999/api/p/internal/ucenter/login?loginName=test102&password=111111) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in /Applications/XAMPP/xamppfiles/htdocs/PHP_test/index.php on line 49

以下是与$ files相关的代码:

<?php
$loginNames="test102";
$passwords="111111";
$apiUrl = "http://192.168.1.254:9999/api/p/internal/ucenter/login?loginName=".$loginNames."&password=".$passwords;
$callback = file_get_contents($apiUrl);

print_r($callback);
//echo $callback;
?>

3 个答案:

答案 0 :(得分:11)

如果您的页面显示此信息,则display_errors设置出现问题。

理想情况下,display_errors对于生产计算机应为Off,您应该使用set_error_handler()自行处理错误。

另请参阅:Error logging, in a smooth way

除非确保页面存在,否则无法停止此特定警告。但是,隔离使用,您可以使用muffle operator来阻止警告显示:

if (false !== ($contents = @file_get_contents('...'))) {
    // all good
} else {
    // error happened
}

请注意,这仍会调用您的自定义错误处理程序

答案 1 :(得分:0)

我有更好的选择。

避免file_get_contents,用户cURL

让我举个例子:

$url = 'http://www.yoururl.com';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
$data = curl_exec($curl);
curl_close($curl);

注意:您是否觉得编码问题会添加:curl_setopt($curl, CURLOPT_ENCODING ,"");

感谢。

答案 2 :(得分:0)

我建议在调用file_get_contents之前尝试检查url是否存在。 您可以参考页面How can I check if a URL exists via PHP?