PHP'包含'问题 - 似乎无法包含正常工作

时间:2013-06-12 20:51:53

标签: php path include relative

我有一点麻烦包括。我有以下文件结构

的htdocs

  • index.php
  • 的login.php

php_includes

  • db_conx.php
  • check_user_status.php

在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)。

我将需要在许多页面中包含此脚本(因为它会检查用户是否已登录)。我是否对路径做了一些奇怪的事情?

3 个答案:

答案 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");