PHP:包括目录、结构和/或路径问题

PHP:包括目录、结构和/或路径问题,php,path,web-deployment,Php,Path,Web Deployment,问题很简单。。看起来是这样 错误: 警告:include(includes/navigation.php):无法打开流:第27行的C:\xampp\htdocs\sub\u page\about.php中没有此类文件或目录 警告:include():在第27行的C:\xampp\htdocs\sub_page\about.php中打开“includes/navigation.php”进行包含(include_path=';C:\xampp\php\PEAR')失败 我正在重做一个网站。目前我

问题很简单。。看起来是这样


错误:

警告:include(includes/navigation.php):无法打开流:第27行的C:\xampp\htdocs\sub\u page\about.php中没有此类文件或目录

警告:include():在第27行的C:\xampp\htdocs\sub_page\about.php中打开“includes/navigation.php”进行包含(include_path=';C:\xampp\php\PEAR')失败


我正在重做一个网站。目前我正在将其拼接到PHP中。同样的方法,我也有方法做。但这次我要让它更有条理。我的代码示例

<!-- Start Navigation -->
<?php include 'includes/navigation.php'; ?>
<!-- End Navigation -->
<!-- Start Top Menu -->
<?php include 'includes/top_menu.php'; ?>
<!-- End Top Menu -->
<!-- Start Promo Menu -->
<?php include 'includes/pro_menu.php'; ?>
<!-- End Promo Menu -->

因此,让文件导航位于根目录中的includes文件夹中。假设上面的代码位于“服务”页面上,该页面的级别为“2”。不是1’。通常我只有'1'级的目录,所以简单地改变

<?php include 'includes/navigation.php'; ?>

对此

<?php include '../includes/navigation.php'; ?>

很好

上述代码位于位于的服务页面上

/子页面/services/services.php

如果我将services.php文件从上面的dir路径移动到靠近root的1层,就像这样

/子页面/services.php

并将include上的路径更改为

<?php include '../includes/navigation.php'; ?>

它很好用。我需要能够从任何地方调用这些文件。有人知道怎么做吗?谢谢


编辑:将以下内容作为示例。我在这条线上拉了一个路径错误

<?php include 'sub_page/about_us/includes/meta.php'; ?>

我可以使用下面的方法来代替

<?php include __DIR__ . "/includes/meta.php"; ?>

去修理它。但是,如果我试图从路径中添加或删除目录级别,它将再次返回错误。对于其他任何线路/路径,同样的事情都不起作用

以前

<?php include 'includes/navigation.php'; ?>

之后



有什么想法吗?

如果我理解正确,您希望在不同级别的其他文件中包含一个文件(services.php)。包含的文件本身包含一些其他文件

您必须在services.php中使用绝对路径,例如

include __DIR__ . "/navigation.php";
那么,包含services.php的目录级别与此无关<代码>\uuuu DIR\uuuu将始终具有services.php的正确路径,无论services.php包含在何处

编辑:也许更清楚

假设目录树:

<htdocs>/index.php
<htdocs>/includes/meta.php
<htdocs>/includes/navigation.php
<htdocs>/sub_page/about.php
/index.php
/包括/meta.php
/包括/navigation.php
/sub_页面/about.php
navigation.php将包含在meta.php中。
meta.php将包含在index.php和about.php中

的路径包括:

php:
include\uuuu DIR\uuuu。“/navigation.php”
index.php:
include“includes/meta.php”
about.php:
include“./includes/meta.php”

现在,任何其他文件都可以包含meta.php,其路径取决于其目录级别。
meta.php中的
\uuuu DIR\uuuu
将始终提供到navigation.php的正确路径。

为php设置一个包含路径以“查找”这些文件:或使用绝对路径。

感谢您的回复,尽管我不完全理解如何实现您发布的代码。我假设在我之前的include的位置,但是我该如何写出来呢?它正在实现。哈哈。到目前为止,你的解释帮助我澄清了1个错误。调整它,看看我是否可以得到所有的路径正确。在问其他问题之前先试试。我马上就知道了。感谢btw。好的,我编辑了我的主要问题/帖子,编辑在底部。在这个例子中,如何写出一个绝对路径?对一些PHP概念来说是新的。正如Bernim指出的,如果在PHP5上,你可以使用
\uuuuu DIR\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。。。然后连接相对的文件路径。我想你的意思是
dirname(\uuu file\uuu)
<htdocs>/index.php
<htdocs>/includes/meta.php
<htdocs>/includes/navigation.php
<htdocs>/sub_page/about.php