0

我正在学习 PHP,刚刚发现 include 关键字非常方便,并开始在我为我工作的公司建立的网站之一上使用它。

现在,我将其应用到的网站将 Perch CMS 用于网站的各个部分,以及 Perch 博客扩展。

我已经让包含在根目录中的所有文件上工作,但其中一个文件是 Perch CMS 博客模板,它位于几个子目录中,PHP 包含在这个文件中不起作用。

我要包含的文件的目录是../inc/

包含不起作用的 Perch 博客模板的目录是../perch/templates/blog/

[编辑]对不起,我也忘了提到一些可能很重要的东西,我使用这个包含的文件被 Perch CMS 用作如何显示博客文章的模板,它是一个常规的 .html 文件(虽然我有我的 .htaccess 文件中允许在 .html 文件中执行 php 的行)。[/编辑]

我正在使用 wamp,在我的www目录中,我有多个文件夹,每个文件夹都充当不同项目的根目录,这是使用projectName.localhost作为地址设置和工作的。例如,其中之一称为f3racing,地址是f3racing.localhost,文件夹结构是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 CMS,这些会起作用吗?

4

3 回答 3

1

你用../错了。

../意思是“上一个目录”。

如果您的文件在其中,/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-13T13:49:18.813 回答
0

我看不出有什么问题:

<?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-13T14:27:50.400 回答
0

原来是 Perch CMS 处理导致问题的模板文件的方式。感谢您的所有建议、答案和建议,你们无法知道这是问题所在。

[编辑]

我会详细说明以防其他人将来遇到同样的问题:

我试图将 php 添加到 perch 模板文件中,该文件位于标准安装中的perch/templates/blog/post.html中,结果该文件不会在其中运行任何 PHP,代码需要进入 perch 文件博客/post.php和 post.html 文件进行了相应的编辑。

[/编辑]

再次,非常感谢。

于 2013-06-13T15:29:22.007 回答