PHP无法读取外部文件

时间:2011-09-04 01:23:25

标签: php readfile file-read

我正在尝试读取托管在另一台服务器上的外部文件,但我遇到了问题。

在这里,我确定了变量:

$variable1 = "test";
$variable2 = "testing";

在此,我确定要阅读的网址:

$url = "http://test.com/page.php?v1=" . $variable1 . "&v2=" . $variable2;

在这里,我读了外部文件:

$content = file($url);
$reading = $content[0];
echo $reading;

奇怪的是什么都没有出来。我尝试输入实际的URL并且它确实有效,但是,当PHP尝试这样做时,它会显示为空白。

我知道这不是一个致命的错误,因为我试着在那里放一些常规文本。所以,有一些错误,就是没有正确读取文件。此外,我确实确保读取服务器没有被包含文件的服务器阻止。

任何建议都将不胜感激。

6 个答案:

答案 0 :(得分:0)

  

此外,我确实确保读取服务器没有被包含文件的服务器阻止。

你是如何确定的?


首先,确保on中的allow_url_fopenphp.ini

如果是on,请尝试设置用户代理。远程文件可能需要有效的用户代理。

ini_set('user_agent', 'Your browser\'s user agent or whatever');

如果是off,请尝试使用cURL library来请求远程文件。您也可以使用cURL来设置用户代理。

答案 1 :(得分:0)

您可以尝试PHP的功能 file_get_contents

echo file_get_contents($url);

答案 2 :(得分:0)

为了读取文件并从远程URL解析它们,您应确保在php.ini配置中启用 allow_url_fopen 选项。

请注意,出于安全原因,默认情况下会禁用此选项。

http://php.net/manual/en/filesystem.configuration.php

Should I allow 'allow_url_fopen' in PHP?

答案 3 :(得分:0)

如果您使用URL作为文件名,则必须在php.ini中启用allow_url_fopen。我会从那里开始。

答案 4 :(得分:0)

如果您要获取某个网站,并且它以<html>之类的内容开头,那么当从浏览器查看时,回显$ content [0]将不会显示。

尝试:

echo htmlentities($content[0]);

或者:

print_r($content);

答案 5 :(得分:0)

file()将数据加载到数组中。然后,您只回显本文档的第一行(echo $reading[0])。第一行可能只是一个<html>标签,也可能是一个doctype声明。

如果您只是想回显文件的全部内容,请执行以下操作:

echo file_get_contents($url);

获取指定的URL并将其作为单个字符串返回 - 不进行行解析,不创建数组。只需一个包含整个文件的纯字符串。