PHP Include总是指向相同的位置,无论页面在哪里


PHP Include always point to same location no matter where page is located

因此,我的页面由多个包含组成,例如head.php文件,footer.php文件等。

我用下面的代码包含它们:

<?php include '/includes/head.php' ?>

问题是,它只适用于'include '目录以上的文件,因为开始斜杠在PHP中不会进入站点的根目录。

无论当前.php文件位于何处,我如何包含所有文件?

你应该考虑使用realpath()

在大多数MVC应用程序中,他们有这样的东西:

DEFINE('ROOT_DIR', realpath(dirname(__FILE__)) . '/');

set in their index.php。由于所有流量都经过index.php文件,因此定义将在那里。

允许你做这样的事情:

include(ROOT_DIR. 'includes/head.php');

它为你省去了很多的麻烦和重写。

还有其他的选项,你可以把它存储在一个配置中,实际上做同样的事情。


As stated in the comments by Dave Chan

你也可以使用auto_prepend_file如果你希望ROOT_DIR可以访问每一个。php启用的页面

要进入父目录,请尝试添加../放在字符串的开头,例如:

包括". ./包括/head.php";