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

时间:2013-06-27 16:47:14

标签: php path web-deployment

问题很简单..看起来似乎。


错误:

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

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


我正在重做一个网站。目前我正在将它拼接到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'lvl的dir,只需更改

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

到这个

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

工作得很好。

以上代码位于

的服务页面上

/sub_page/services/services.php

如果我将services.php文件从上面的dir路径移动到接近root的1 lvl那么

/sub_page/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'; ?>

<?php include __DIR__ . "/navigation.php"; ?>

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

设置PHP的包含路径以“查看”这些文件:http://php.net/manual/en/function.set-include-path.php或使用绝对路径。

答案 1 :(得分:0)

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

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

include __DIR__ . "/navigation.php";

然后,您在services.php中包含哪个目录级别无关紧要。无论service.php包含在哪里,__DIR__都将始终拥有正确的services.php路径。

编辑:也许更清楚......

假设目录树:

<htdocs>/index.php
<htdocs>/includes/meta.php
<htdocs>/includes/navigation.php
<htdocs>/sub_page/about.php

navigation.php将包含在meta.php中 meta.php将包含在index.php和about.php中。

包含的路径:

meta.php:include __DIR__ . "/navigation.php";
index.php:include "includes/meta.php";
about.php:include "../includes/meta.php";

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

的正确路径