无法使用PHP file_get_contents打开我知道的文件

时间:2013-01-31 17:00:51

标签: php

我已经浏览了整个互联网和整个Stack Overflow,我无法找到解决问题的方法。

我基本上有一个PDF文件,如果我点击网页浏览器,我可以通过网址访问该文件。 没有离开,它是:http://url.com/manage/pdf/file.pdf?id=172)。我知道这似乎不寻常,但请相信我,点击这个地址给我一个PDF文件。

但是如果我尝试用file_get_contents命中它,我会收到一个错误:

无法打开流:连接已超时(显然我已删除了文件名和行号)。

我不打算压制错误(我已经可以这样做了),我也没有想办法处理错误。我想知道为什么错误正在发生,所以我可以阻止它发生。

特别是因为同一行代码没有以类似的方式获取其他文件的问题。

由于我无法控制的限制,我无法使用cURL。

该文件小于1MB且已经检查了php.ini中的所有相关设置(不能记住它们,但允许打开套接字和套接字超时)。

任何人都可以给我一个我没见过的答案,实际上会有效!如果您需要更多详细信息,请与我们联系。

先谢谢你了!

3 个答案:

答案 0 :(得分:3)

你不能file_put_contents这样的网址。

答案 1 :(得分:0)

您正在尝试从网址开放文件! file_put_contents()无法完成此操作。

请参阅 here 作为参考。

如果您尝试将数据添加到文件中,则该文件必须位于本地服务器上的可写目录中。

答案 2 :(得分:0)

您无法将文件放入远程服务器。如果您尝试从该网站打开 PDF,则需要使用file_get_contents()

http://url.com/manage/pdf/file.pdf?id=172

您的链接包含“管理”一词。如果您需要登录才能看到该文件,那么您的浏览器会看到它,但PHP不能,因为它没有登录到服务器。第二个问题是,如果我查看该链接,我将被重定向到http://www.coolchaser.com/?id=172。如果您正在处理可能具有重定向的链接,则应切换到CURL,并在curl选项中告诉它重定向以及允许的重定向级别数。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://url.com/manage/pdf/file.pdf?id=172');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$result = curl_exec($ch);
curl_close($ch);