Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在PHP中使用file()函数访问外部URL_Php_Apache_File_Url_Httpforbiddenhandler - Fatal编程技术网

无法在PHP中使用file()函数访问外部URL

无法在PHP中使用file()函数访问外部URL,php,apache,file,url,httpforbiddenhandler,Php,Apache,File,Url,Httpforbiddenhandler,我有以下代码: $url = 'http://' . $host . ':' . $port . $params; $results = file( $url ); 我得到以下例外情况: file(http://someurl.com/asd/asd): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden 但我直接在浏览器中访问URL(存储在$URL变量中),它工作得非常好。为什么从PHP访问时出现问题?此错误

我有以下代码:

$url = 'http://' . $host . ':' . $port . $params;
$results = file( $url );
我得到以下例外情况:

file(http://someurl.com/asd/asd): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden
但我直接在浏览器中访问URL(存储在$URL变量中),它工作得非常好。为什么从PHP访问时出现问题?

此错误消息:

HTTP/1.0 403禁止

…实际上直接来自您试图访问的服务器。因此,PHP访问外部文件不是问题

相反,更大的问题是说服服务器实际提供文件,就像它提供给web浏览器一样

我要检查几个问题:

  • 文件密码受保护吗?web浏览器将保存您输入的密码,并允许您在不再次输入密码的情况下重新访问URL,但PHP不知道使用什么密码

  • 也许服务器通过检查用户代理字符串来限制非浏览器的访问

  • 也许服务器正在限制访问,除非您是从同一站点的另一个页面被引用的

  • 您可以尝试的一件事是使用一个直接请求文件。您可以尝试使用不同的头、用户代理等,看看是否可以重现问题

    如果非要我猜的话,我的钱应该放在第一个问题上——需要密码。但是,如果不知道实际的URL,就无法知道



    如果您确实知道是什么阻止了您访问该文件,那么您应该阅读、流,尤其是,以了解如何从PHP设置缺少的信息。有多种方法可以指定密码、用户代理、引用者头,甚至是您想要的任何随机HTTP头。

    URL文件访问可能在服务器配置(php.ini)中被禁用-->allow_URL_fopen=Off(更改为On)@0xBAADF00D我想这是另一个错误消息。。。他正在访问的服务器可能是UA字符串或服务器ip出现问题。可能是某种反bot措施完成了@0xBAADF00D,可能它被阻止了如果您不发送用户代理,请尝试
    cURL
    @Orangepill尝试使用“wtf”用户代理从cURL访问url:cURL-a“kljslkdfjslfjdsklfjsldkf”http://... 查看serveur是否阻止未知的用户代理。@0xBAADF00D我想应该已经转到Awan:)