我有一点麻烦包括。我有以下文件结构
的htdocs
php_includes
在db_conx.php文件中我创建了一个变量$ number = 10;用于测试。
db_conx文件包含在check_user_status.php文件中,其中包含以下代码:
include_once("db_conx.php");
并且工作正常 - 即我可以回显$ number并获得10.
但是,我使用以下代码在login.php顶部包含check_user_status.php文件:
include_once("php_includes/db_conx.php");
在此页面上,我无法在此页面上回显$ number(check_user_status.php)。
我将需要在许多页面中包含此脚本(因为它会检查用户是否已登录)。我是否对路径做了一些奇怪的事情?
答案 0 :(得分:2)
对于相对路径,您需要执行此操作。
include_once("../php_includes/db_conx.php");
打破这种局面。
如果您在浏览器中点击该文件,您当前的工作目录最初将成为htdocs /。
..
支持你一个目录级别(所以包含htdocs和php_includes的目录)
然后你想跟随php_includes到达db_conx.php。
当您在子目录中执行文件时,这将成为一个问题。假设你和page2.php到一个htdocs / subpages /
现在,如果我们按照相同的步骤操作,我们就不会到达同一地点。
更好的方法是获取相对于绝对位置的路径。我喜欢使用文档根目录(在你的情况下是htdocs),所以:
include($_SERVER["DOCUMENT_ROOT"]."/../php_includes/db_conx.php");
将引用文件系统上的相同位置,无论它在何处使用。
答案 1 :(得分:0)
我认为你可以使用__DIR__
魔法常数
文件的目录。如果在include中使用,则返回包含文件的目录。这相当于dirname( FILE )。除非它是根目录,否则此目录名称没有尾部斜杠。 (在PHP 5.3.0中添加。)
这将帮助您使用嵌套的包含文件,实际上文件路径将始终自动设置,您不必处理absolute paths
。
答案 2 :(得分:0)
如果你的文件结构是正确的,假设php_includes不是htdocs中的目录,你需要这样做:
include_once("../php_includes/db_conx.php");