1

我希望能够从完整的域和文件路径中读取文件的内容,例如:

http://www.example.com/files/file.txt

在这种情况下我不能做的是:

../files/file.txt

我已经尝试过 curl、fopen、file_get_contents 并且宁愿使用 curl 但不能让它为它们中的任何一个工作。

是否有一个明显的原因导致我错过了这不起作用?

这是每次尝试的代码片段,也许有人知道其中一个有什么问题?

顺便说一句,如果我能做到../files/file.txt,它适用于每个选项。

$file = "http://www.example.com/files/file.txt";

开放:

$f=fopen($file,'r'); 
$data=''; 
while(!feof($f)) 
    $data.=fread($f,$size); 
fclose($f); 

卷曲:

function curl($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}

$data = curl($file);

文件获取内容:

$data = file_get_contents($file);

提前感谢所有帮助。

4

2 回答 2

3

file_get_contents适用于 PHP 4 >= 4.3.0 和 PHP 5 的 URL:

“如果fopen 包装器已启用,则 URL 可用作此功能的文件名”

许多共享主机禁用了此选项,或者正在使用旧版本的 PHP,并阻止使用 PHP 的安全模式加载外部文件。

从启用 error_reporting开始,然后查看您的托管商网站,看看他是否阻止了外部文件。

于 2013-06-21T18:18:09.700 回答
0

也许您的主机上禁用了 url fopen 并且来自其他域的 url 被禁用了?

php.ini var allow_url_fopen 必须打开

于 2017-02-24T06:45:29.123 回答