使用服务器端在html文件中包含'include'命令

时间:2011-08-28 12:24:10

标签: php rss hosting ssi

背景

我正在尝试使用php将rss feed包含到html文档中

代码

<?php
include ("feed url");
?> 

我已经使用ssl命令在html文件中成功添加了include标记,就像这样

<!--#include virtual="rssfeed.php" -->

编辑htaccess文件后工作正常。现在问题是因为在我的php中使用include(“feed url”)我收到此错误:

  

警告:include()[function.include]:禁用URL文件访问权限   第2行路径/ rssfeed.php中的服务器配置

     

警告:include(feed url)[function.include]:无法打开流:   在第2行的path / rssfeed.php中找不到合适的包装器

现在要注意的事情我已经尝试设置php_value allow_url_fopen 1但没有运气,因为文件存放在第三方托管服务器上,所以我没有很多访问权限,所以他们阻止我将allow_url_fopen转为ON,原因很明显。所以我的问题是如何解决这个问题?任何指示都将大大减少。

感谢大家阅读。

2 个答案:

答案 0 :(得分:2)

您的服务器配置方式使您无法从远程位置包含服务器。这在共享托管环境中很常见,有助于减少服务器负载并降低恶意代码被意外执行的可能性。

但是,如果我理解你的话,你不能只使用include()构造包含RSS feed,因为它不是有效的PHP代码 - include()期望路径是有效的PHP源代码文件。你正在做什么,如果你的服务器允许你这样做,将导致无用的输出或解析错误。

您需要连接到RSS源(例如,使用cURLfsockopen(),具体取决于您对远程站点的请求所需的控制级别)并解析源数据以便输出以合理的形式。

答案 1 :(得分:0)

include "http://..."是一个坏主意,因为http://...的内容被评估为PHP代码,如果有人可以在该RSS源的响应中注入PHP代码,则会打开您的站点以进行攻击。

如果要显示其他站点的数据,请使用curl。来自PHP Manual示例:

<?php
// create a new cURL resource
$ch = curl_init();

// set URL and other appropriate options
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);

// grab URL and pass it to the browser
curl_exec($ch);

// close cURL resource, and free up system resources
curl_close($ch);
?>