很抱歉打扰你这么简单的事情。我不能正确地说出问题,以便在任何搜索栏上得到结果,我已经尝试了谷歌,而且这里没有相关答案。
我目前正在设置一个include语句,来自不同文件夹的PHP文件需要包含相同的文件,即“(Top directory)/public_html/Include/Head.php”。
我不知道如何告诉PHP在顶层目录中查找public_html。我原本以为这就是“......”的用途,但似乎表现得很糟糕。可以somone请解释一下吗?
以下是我正在使用的内容:
<?php include("../public_html/Include/Head.php") ?>
此外,include是一个文件夹,我放置了用户通常不需要查看的所有文件,主要是为了让它们不受影响,并使我的主文件夹不那么混乱。
答案 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');
答案 3 :(得分:1)
有几件事会影响你想要完成的事情。
首先,绝对路径和相对路径。每当您在路径中看到目录导航快捷方式时,就会使用相对路径。 ..
表示 up 目录或父目录。
其次,生根或chrooting的概念可能适用。根据您的系统,最顶层的目录/
(或\
)可能是也可能不是您提供文件的位置。例如,您可以将特定网站的最顶层文件夹设置为文件系统中的特定文件夹(使用Apache)。这被认为是“生根”该网站到该文件夹。没有用户或浏览器可以“查看”其父文件夹中的文件。
如果您的PHP文件位于多个级别的文件夹中,但是您需要它们来自同一位置的所有包含文件,那么您可能需要使用绝对路径。
您的路径应该是完全取决于系统的具体细节。