PHP fopen不在一个特定域上工作

PHP fopen不在一个特定域上工作,php,Php,我正在尝试使用fopen功能从远程url下载文件 问题是我需要的一个网站的函数返回false。来自其他域的函数工作正常 怎么可能呢?也许在php中有一些选项?或者该网站可以保护文件不受某些访问(但浏览器文件可用)?在某些共享主机或某些VPS fopen上无法工作或在PHP中被禁用。试着用卷曲来获得连续性。如果这不起作用,最后一个解决方案(仅当您通过GET发送一些信息而不是接收数据时)是使用服务器端可以执行许多检查以防止“误用”其服务。一个例子是“HTTP Referer头”的检查,它表明您的请求

我正在尝试使用
fopen
功能从远程url下载文件

问题是我需要的一个网站的函数返回false。来自其他域的函数工作正常


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

在某些共享主机或某些VPS fopen上无法工作或在PHP中被禁用。试着用卷曲来获得连续性。如果这不起作用,最后一个解决方案(仅当您通过GET发送一些信息而不是接收数据时)是使用
服务器端可以执行许多检查以防止“误用”其服务。一个例子是“HTTP Referer头”的检查,它表明您的请求是由浏览器从链接导航到对象完成的

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

  • 找出您收到的确切错误消息。最简单的方法是使用php的
    cURL
    扩展名,而不是
    file\u open()
    来处理您的请求,它允许您转储返回的所有内容。回复中可能有一些有价值的信息,比如原因

  • 通过网络嗅探器监控这两个请求,例如
    tcpdump
    wireshark
    。通过对两个请求的比较,可以看出确切的区别。这也是在脚本中精确重建浏览器请求所需的信息