2011-09-04 208 views
2

我想读取托管在另一台服务器上的外部文件,但遇到问题。PHP无法读取外部文件

在这里,我找出变量:

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

在这里,我找出网址为:

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

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

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

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

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

任何建议,将不胜感激。

+1

我建议用'urlencode'和'print_r'来包装你的变量,看内容数组是否以空行开始。您可能还会考虑'file_get_contents',具体取决于您的最终目标。 –

+2

确保allow_url_fopen设置为true。您可以使用ini_get() –

回答

0

此外,我确定读取服务器没有被服务器上的文件阻塞。

你是怎么确定


首先,确保allow_url_fopenphp.inion

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

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

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

+0

来测试Allow_url_fopen是否开启。我尝试用代理“Mozilla/5.0(Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9)Gecko/20071025 Firefox/2.0.0.9”设置用户代理。“不幸的是,这并没有奏效。 :(任何其他技巧? – Jacob

+0

@Jacob Weird。远程服务器可能期望所有典型的* browser *头文件。你试过cURL吗?你能够公开远程URL以便我可以测试吗? – alex

0

你可以试试PHP的功能的file_get_contents

echo file_get_contents($url); 
+0

'file_get_contents() '会通过'file()'的路由,所以如果'file()'不起作用,我怀疑任何本地的PHP文件函数都会。 – alex

0

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

0

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

尝试:

echo htmlentities($content[0]); 

或者:

print_r($content); 
0

file()将数据加载到一个数组。然后您只回显此文档的第一行(echo $reading[0])。该第一行很可能只是一个<html>标记或可能是文档类型声明。

如果你只是想回声出文件的全部内容,然后执行:

echo file_get_contents($url); 

,其获取指定的URL,并返回一个字符串 - 无行解析,没有阵列创建。只需一个包含整个文件的普通字符串即可。