我的剧本......
DEFINE('DIR', 'http://www.example.com');
DEFINE('IN_PAGE', TRUE);
INCLUDE DIR . ('/incl/header.php');
INCLUDE DIR . ('/incl/content.php');
INCLUDE DIR . ('/incl/footer.php');
if (!defined('IN_PAGE'))
{
header("Status: 403 Forbidden");
exit('<B>403 Forbidden</B>');
}
警告: 包括(http://www.example.com/incl/header.php) [function.include]:无法打开 stream:HTTP请求失败! HTTP / 1.1 403禁止进入 /public_html/incl/index-incl.php 第4行
警告:include()[function.include]: 打开失败 'http://www.example.com/incl/header.php' 包括在内 (include_path ='。:/ usr / lib64 / php:/ usr / lib / php')in /public_html/incl/index-incl.php 第4行
它的工作方式有点,如果我尝试直接访问该文件,我会收到“Forbidden”消息,就像我想要的那样..但是我不能将它包含在我的脚本中..尽管我很确定我正确地遵循了phpBB的dev wiki 。
我是非常新手,所以非常感谢您的帮助! =]
答案 0 :(得分:1)
使用htaccess
答案 1 :(得分:1)
理想的方法是将您的包含文件放在webroot之外。
这并不总是可行,因此请确保您的包含文件不会自行“运行”任何代码。采用面向对象的方法,其中一个文件包含可运行的代码,或者它是一个不自行执行任何操作的类文件。
另一种替代方法是更改包含文件的扩展名(例如.inc),并使用htaccess直接访问这些扩展名。
作为专家提示:当您包含文件时,始终包含绝对路径:
include(dirname(__FILE__) . "/includes/template.inc");
// __FILE__ is the diskpath of the current file
而不是:
include("includes/template.inc");
这将为您节省许多麻烦。
正如其他人所说,永远不要包含来自其他网络服务器(http://)的文件,这意味着你做了一些根本错误的事情:P
答案 2 :(得分:0)
你试图包括喜欢 INCLUDE('http://www.example.com/incl/header.php'); 基本上
将目录更改为 DEFINE('DIR',dirname(__ FILE __));
或类似的东西,所以它不在包含路径中使用域,这意味着包含在本地完成。
答案 3 :(得分:0)
您尝试包含远程文件DEFINE('DIR', 'http://www.example.com');
,以便您的服务器实际调用该网址,获取错误并显示
使用相对路径,例如。而是DEFINE('DIR', '/');
答案 4 :(得分:0)
问题是,include
使用文件的本地路径,而不是网址。您需要知道帐户中文件的根路径,例如/home/your_account/public_html/