Php包含()问题

时间:2013-02-08 14:13:25

标签: php

我有三个文件如下

  1. users.php
  2. auth.php
  3. main.php
  4. 其中users.php位于目录/的根目录。 auth和main.php位于测试文件夹示例/test/auth.php& /test/main.php

    Users.php包含以下php代码。

    <?php 
    include('test/main.php');
    ?>
    

    auth.php包含以下php代码。

    <?php 
    include('../test/main.php');
    ?>
    

    main.php代码

    <?php
    include('test/db.php');
    ?>
    

    我正在执行的users.php它工作正常,但是当我执行位于根文件夹的users.php时,我输出完美但是如果我正在执行/test/auth.php

    Warning: include(test/db.php) [function.include]: failed to open stream: No such file or directory in /path/db.php on line 2
    

    是否有任何解决方案可以使用正确的函数来访问auth.php错误。

2 个答案:

答案 0 :(得分:2)

我稍微努力了解你的问题。我认为你的文件结构如下:

  • users.php
  • test(文件夹)
    • main.php
    • auth.php
    • db.php

如果是这样,要包含db.php中的main.php,您需要做的就是include('db.php');。当前文件夹自动位于用于确定可能包含哪些文件的路径中。

auth.php中,您执行include('../test/main.php');。这是不必要的,因为您已经在test文件夹中。你做..以摆脱它,然后你直接回到它!您可以使用include('main.php');简化此操作。

答案 1 :(得分:0)

包含总是相对于工作目录(实际上,相对于 PATH ,工作目录是其中的一部分)。工作目录由正在执行的脚本确定。假设您具有以下结构:

webroot/
    foo.php
    folder/
        bar.php

当您通过命令行上的foo.php或浏览器中的$ php foo.php运行localhost/foo.php时,工作目录webroot/ 。如果您运行folder/bar.php,则工作目录为webroot/folder

为了确保您将文件包含在include所在的文件中,请使用以下内容:

include __DIR__ . '/folder/bar.php`;

那,或alter your PATH将项目根添加到它并始终包含相对于项目根目录。我更喜欢上面显示的文件相对包含或autoloading