PHP fopen没有在一个特定的域上工作

时间:2016-02-07 16:22:37

标签: php

我尝试使用fopen功能从远程网址下载文件。

问题是它的功能从我需要的一个网站返回false。从其他领域,功能正常。

怎么可能?也许在PHP中有一些选项?或者该网站可以保护文件免受某些访问(但是从浏览器文件可用)?

2 个答案:

答案 0 :(得分:1)

服务器端可以做很多检查以防止"错过使用"他们的服务。一个例子是检查" HTTP Referer Header"表示您的请求是由浏览器从指向对象的链接导航完成的。

如果您愿意,可以模拟所有这些,但为此您必须确切了解您的请求与浏览器成功之间的区别。有两件事要做:

  1. 找出您收到的确切错误消息。最简单的方法是使用php的cURL扩展名而不是file_open()作为您的请求,它允许您转储您获得的所有内容。回复中可能会有一些有价值的信息。

  2. 通过网络嗅探器监控这两个请求,例如tcpdumpwireshark。两个请求的比较可以说明确切的区别。这也是您在脚本中精确重建浏览器请求所需的信息。

答案 1 :(得分:0)

在某些共享主机或某些VPS fopen无法正常工作或在PHP内禁用。尝试使用CURL来获取contnt。如果这不起作用,最后的解决方案(仅当您通过GET发送一些信息而不是重新接收数据时)是使用<img>标签并在“src”内发送请求。只有当你发送信息时才能工作,但是如果你需要回忆某些东西,你需要使用或者使用AJAX或者cURL。