我正在学习PHP,并且刚刚发现include关键字有多方便,并且已经开始在我为我工作的公司构建的一个站点上使用它。
现在,我正在应用这个站点来使用Perch作为网站的部分内容,以及Perch博客扩展。
我已经让inlclude处理根目录中的所有文件,但是其中一个文件是Perch博客模板,它位于两个子目录中,PHP包含在这个文件中不能工作。
我试图包含的文件的目录是./inc/。
Perch博客模板中包含不起作用的目录是../perch/templates/blog/.
编辑对不起--我也忘了提到一些可能很重要的东西,我使用的这个包含在其中的文件被Perch用作如何显示博客文章的模板,它是一个普通的.html文件(尽管我的.htaccess文件中有一行允许在.html文件中执行.html)。
我使用wamp,在我的www目录中,我有多个文件夹,每个文件夹充当不同项目的根目录,这是使用作为地址来设置和工作的。例如,其中一个名为f3racing.localhost f3racing,地址为f3racing,文件夹结构为wamp/www/f3racing/.
在所有其他文件(位于根目录中)中,这是可行的:
<?php include("inc/header.php"); ?>我试过这样的方法:
<?php include("../../../inc/header.php"); ?>
<?php include($_SERVER["DOCUMENT_ROOT"] . "/inc/header.php"); ?>
<?php include($_SERVER['DOCUMENT_ROOT'] . "/inc/header.php"); ?>
<?php include($_SERVER["DOCUMENT_ROOT"] . "/f3racing/inc/header.php"); ?>
<?php
include(
$path = $_SERVER['DOCUMENT_ROOT'];
$path .= "/inc/header.php";
include_once($path);
);
?>我完全搞不懂该怎么做才能让它发挥作用,其中一个应该在正常情况下工作吗?我的意思是,如果我没有使用Perch,这些会起作用吗?
发布于 2013-06-13 13:49:18
你用错了../。
../的意思是“上一个目录”。
如果您的文件位于/usr/var/www/path/中,那么在该文件中执行include('../anotherfile.php')将查找/usr/var/www/anotherfile.php文件(请注意,我们已经进入了一个目录)。
您的文件位于/usr/var/www/perch/templates/blog/中,您希望在/usr/var/www/inc/中引用一个文件。因此,您需要“返回”3个文件夹(因此您在www文件夹中),然后引用inc目录,然后引用文件。
您的内容应该如下所示:
include('../../../inc/header.php');试试看,那应该管用。
编辑:我不太了解wamp,但我想您可以将上面示例中的/usr/var/www位交换为类似于c:/Program Files/WAMP/www或目录路径的东西。这都是相同的理论。
发布于 2013-06-13 14:27:50
我看不出是怎么回事
<?php include("../../../inc/header.php"); ?>根据你的描述,你有一个文件:
root/inc/header.php
另一份档案:
root/perch/templates/blog/some_file.php
其中包含上面的include。
我对此进行了测试,让header.php包含echo "header.php";,然后加载some_file.php。
发布于 2013-06-13 15:29:22
结果是Perch处理模板文件的方式导致了这个问题。谢谢你的建议,答案和建议--你们不可能知道这是问题所在。
编辑
我会详细说明,以防其他人将来也会遇到同样的问题:
我试图将php添加到perch模板文件中,该文件位于perch / template /blog/ post.html中,在标准安装中,该文件将不会在其中运行任何PHP,代码需要进入perch文件blog/post.php,并相应地编辑post.html文件。
/EDIT
再次,非常感谢。
https://stackoverflow.com/questions/17088637
复制相似问题