我已经浏览了整个互联网和整个Stack Overflow,我无法找到解决问题的方法。
我基本上有一个PDF文件,如果我点击网页浏览器,我可以通过网址访问该文件。 没有离开,它是:http://url.com/manage/pdf/file.pdf?id=172)。我知道这似乎不寻常,但请相信我,点击这个地址给我一个PDF文件。
但是如果我尝试用file_get_contents命中它,我会收到一个错误:
无法打开流:连接已超时(显然我已删除了文件名和行号)。
我不打算压制错误(我已经可以这样做了),我也没有想办法处理错误。我想知道为什么错误正在发生,所以我可以阻止它发生。
特别是因为同一行代码没有以类似的方式获取其他文件的问题。
由于我无法控制的限制,我无法使用cURL。
该文件小于1MB且已经检查了php.ini中的所有相关设置(不能记住它们,但允许打开套接字和套接字超时)。
任何人都可以给我一个我没见过的答案,实际上会有效!如果您需要更多详细信息,请与我们联系。
先谢谢你了!
答案 0 :(得分:3)
你不能file_put_contents
这样的网址。
答案 1 :(得分:0)
答案 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);