PHP最高目录

时间:2011-05-16 16:39:35

标签: php include directory

很抱歉打扰你这么简单的事情。我不能正确地说出问题,以便在任何搜索栏上得到结果,我已经尝试了谷歌,而且这里没有相关答案。

我目前正在设置一个include语句,来自不同文件夹的PHP文件需要包含相同的文件,即“(Top directory)/public_html/Include/Head.php”。

我不知道如何告诉PHP在顶层目录中查找public_html。我原本以为这就是“......”的用途,但似乎表现得很糟糕。可以somone请解释一下吗?

以下是我正在使用的内容:

<?php include("../public_html/Include/Head.php") ?>

此外,include是一个文件夹,我放置了用户通常不需要查看的所有文件,主要是为了让它们不受影响,并使我的主文件夹不那么混乱。

4 个答案:

答案 0 :(得分:3)

定义一些全局常量:define('TOP_DIR', '/www/')然后在所有包含中使用它:

include(TOP_DIR.'public_html/Include/Head.php');

define()放在一个易于到达的位置,并将其包含在您需要的任何页面中。如果你使用一个总是有一个像CodeIgniter这样的入口点的框架,那么这个东西会变得简单得多。然后,您可以在入口点文件中找到包含常量和设置的文件,并且您知道这些内容始终可用。

答案 1 :(得分:2)

PHP的文件导入有点奇怪,如果你想相对于你想要的文件导入,请改用它:

<?php include(dirname(__FILE__) . "../Include/Head.php") ?>

原因是如果(Top directory)/public_html/myfile.php中的文件包含此文件,则相对包含将相对于myfile.php而不是包含的文件。

答案 2 :(得分:2)

您可以使用doc root作为前缀,以便您拥有一致的起点,并且不必担心在您的特定情况下进行遍历,例如,

include($_SERVER['DOCUMENT_ROOT'].'/Include/Head.php')

或者,对于应用程序范围的解决方案,您只需将Include添加到包含路径:

set_include_path(get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'].'/Include');

http://php.net/manual/en/function.set-include-path.php

答案 3 :(得分:1)

有几件事会影响你想要完成的事情。

首先,绝对路径和相对路径。每当您在路径中看到目录导航快捷方式时,就会使用相对路径。 ..表示 up 目录或父目录。

其次,生根或chrooting的概念可能适用。根据您的系统,最顶层的目录/(或\)可能是也可能不是您提供文件的位置。例如,您可以将特定网站的最顶层文件夹设置为文件系统中的特定文件夹(使用Apache)。这被认为是“生根”该网站到该文件夹​​。没有用户或浏览器可以“查看”其父文件夹中的文件。

但是,PHP通常不会与网站的位置相同。

如果您的PHP文件位于多个级别的文件夹中,但是您需要它们来自同一位置的所有包含文件,那么您可能需要使用绝对路径。

您的路径应该是完全取决于系统的具体细节。