file_get_contents(url): 无法打开流

编程


大家好;

我有一个从 URL 获取内容的 php 文件,但收到失败消息

Warning: file_get_contents(http://xxxxxx): failed to open stream: HTTP request failed! in xxxx.php on line xx

我尝试了很多在线解决方案,但仍然不起作用。 这是代码

$cryptpass = rawurlencode(crypt($pc['pcpassword']));
$url = "http://" . $pc['pcname']."/Reports/ReportList.php?&username={$pc['pcusername']}&cryptpass=$cryptpass&noredir=1";
$parsed_list = read_general_list($url, false);
C#
function read_general_list($url, $make_assoc = false)
    {
        $compressed_data = file_get_contents($url);
    }

$compressed_data 始终为 null 并且会引发错误:

警告:file_get_contents(http://xxxxxx):无法打开流:HTTP 请求失败! 在 xxxx.php 的第 xx 行

请问有什么建议吗?

解决方案1

正如错误消息所示,无法打开请求的流(URL)。 造成这种情况的可能原因有很多:
1. 基本 URL 错误。 $pc['pcname']

2. 用户名和/或密码错误
3. 用户名/密码没有服务器权限
4.您的系统无法访问服务器(防火墙、PHP 权限…)
4….

我会使用以下策略来调试:
1. 转储 $url 并将其记下来。
2. 使用带有调试工具的浏览器(例如Firefox/Firebug)并尝试访问该URL。
3. 查看返回的标头,了解服务器报告的错误(如果有)。
4. 想想为什么会返回这个错误…

干杯,
彼得

如果这回答了您的问题,请投票并将其标记为已接受。

解决方案2

抱歉,我从未完全更新过这个问题。 可能是如果有人仍在寻找答案。

这对我有用。 这是 File_get_contents 的等效函数,但可以处理大量数据。 我在网上找到了这个解决方案。

function file_get_contents_curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser.
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}

コメント

タイトルとURLをコピーしました