-2

我浏览了整个 Internet 和 Stack Overflow,但我无法找到解决问题的方法。

我基本上有一个 PDF 文件,如果我在网络浏览器中点击,我可以通过网址访问该文件。不用了,它是:http ://url.com/manage/pdf/file.pdf?id=172 )。我知道这看起来很不寻常,但相信我,点击这个地址会给我一个 PDF 文件。

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

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

我不想抑制错误(我已经可以做到这一点),也不想寻找处理错误的方法。我想知道为什么会发生错误,以便阻止它发生。

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

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

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

任何人都可以给我一个我还没有看到的答案,它实际上会起作用!如果您需要更多详细信息,请告诉我。

提前谢谢你!

4

3 回答 3

3

你不能file_put_contents访问这样的网址。

于 2013-01-31T17:03:06.207 回答
0

您正在尝试从网址打开文件!这不能用file_put_contents().

请参阅此处以获取参考。

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

于 2013-01-31T17:08:50.360 回答
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);
于 2013-01-31T17:11:56.137 回答