背景
我正在尝试使用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,原因很明显。所以我的问题是如何解决这个问题?任何指示都将大大减少。
感谢大家阅读。
答案 0 :(得分:2)
您的服务器配置方式使您无法从远程位置包含服务器。这在共享托管环境中很常见,有助于减少服务器负载并降低恶意代码被意外执行的可能性。
但是,如果我理解你的话,你不能只使用include()
构造包含RSS feed,因为它不是有效的PHP代码 - include()
期望路径是有效的PHP源代码文件。你正在做什么,如果你的服务器允许你这样做,将导致无用的输出或解析错误。
您需要连接到RSS源(例如,使用cURL或fsockopen(),具体取决于您对远程站点的请求所需的控制级别)并解析源数据以便输出以合理的形式。
答案 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);
?>