0

我有三个文件,如下所示

  1. 用户.php
  2. 授权文件
  3. 主文件

whereusers.php位于目录的根目录/。auth 并且main.php位于测试文件夹 example /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 是否有任何解决方案可以通过正确的功能访问错误。

4

2 回答 2

2

我很难理解你的问题。我认为您的文件结构如下所示:

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

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

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

于 2013-02-08T14:17:17.233 回答
0

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

webroot/
    foo.php
    folder/
        bar.php

当您在命令行上运行foo.php或通过浏览器访问时,工作目录是. 如果运行,工作目录是.$ php foo.phplocalhost/foo.phpwebroot/folder/bar.phpwebroot/folder

为确保您包含与所在文件相关的文件,请include使用以下内容:

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

那,或者更改您的 PATH以将您的项目根目录添加到其中,并始终包含相对于项目根目录的内容。我更喜欢上面显示的文件相对包含或自动加载

于 2013-02-08T14:23:58.643 回答