2

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

在这里,我确定了变量:

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

在这里,我确定要阅读的 URL:

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

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

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

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

我知道这不是一个致命错误,因为我尝试在其中放置一些常规文本。所以,有一些错误只是没有正确读取文件。此外,我确实确保读取服务器没有被带有文件的服务器阻止。

任何建议,将不胜感激。

4

6 回答 6

0

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

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

echo file_get_contents($url);

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

于 2011-09-04T02:11:40.200 回答
0

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

你是怎么确定的


首先,确保allow_url_fopenon.php.ini

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

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

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

于 2011-09-04T01:28:40.590 回答
0

你可以试试 PHP 的函数file_get_contents

echo file_get_contents($url);
于 2011-09-04T01:29:29.873 回答
0

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

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

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

我应该在 PHP 中允许“allow_url_fopen”吗?

于 2011-09-04T01:30:04.570 回答
0

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

于 2011-09-04T01:31:10.763 回答
0

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

尝试:

echo htmlentities($content[0]);

或者:

print_r($content);
于 2011-09-04T01:36:47.200 回答