如何从嵌套文件夹中包含脚本?

时间:2016-04-26 22:18:58

标签: php

我有这个文件夹结构:

-out
    -DBconnection.php
-root
    -application
        -contact.php

此处还有contact.php的内容:

function index(){
    <form action="http://example.com/localhost/application/contact/check">
        // some code here ...
    </form>
}

function check(){
    // I need to include DBconnection.php script here
    require_once( /* what path */ );
    ...
}

但是这条路径不起作用:../../out/DBconnection.php

注意:上面的路径也适用于index()功能。但是,index()在我的路由系统中被定义为默认值,当我打开此路径时

http://example.com/contact 
/* which is the same as
   http://example.com/contact/index
*/

然后index将被执行。那么如何将DBconnection.php纳入check()函数?

4 个答案:

答案 0 :(得分:1)

在这种情况下我做的是在根文件的最顶部添加以下行:

define( 'DS',       DIRECTORY_SEPARATOR );
define( 'ROOT',     dirname(dirname(dirname(__FILE__))) ); // Root is ../../

当我包含一个文件时,我使用这些常量来获取路径(它总是相对于rood文档):

require ROOT . DS . "out" . DS . "DBconnection.php";

答案 1 :(得分:0)

尝试使用:../../ out / DBconnection.php

答案 2 :(得分:0)

您必须具有以下结构:

DIR1
    out
        DBconnection.php
    root
        application
            contact.php

因此,从contact.php内可以使用DBconnection.php,你必须上3个目录。正确的方法是:../../out/DBconnection.php

答案 3 :(得分:0)

这实际上取决于include路径中的内容以及应用程序的引导位置。

如果您正在使用相对路径(您使用../),那么您需要了解这只是因为它看起来与您正在处理的文件有关,它可能不会是。它与您输入的文件相关。通过

要解决这个问题,你应该可以使用像

这样的东西

include_once(dirname(__FILE__) . '/../../out/DBConnection.php');

然而,您真正应该做的是将您的应用程序路径放在包含路径中。这样,你就可以做到:

include_once('out/DBConnection.php');

您可以在应用程序的任何位置执行此操作!