>我有这个文件夹结构:
-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()
函数中呢?
在这种情况下,
我要做的是在根文件的顶部添加以下行:
define( 'DS', DIRECTORY_SEPARATOR );
define( 'ROOT', dirname(dirname(dirname(__FILE__))) ); // Root is ../../
当我包含一个文件时,我使用这些常量来获取路径(它总是相对于 rood 文档):
require ROOT . DS . "out" . DS . "DBconnection.php";
尝试使用: ../../out/DBconnection.php
这实际上取决于您include
路径中的内容,以及应用程序引导的位置。
如果您使用的是相对路径(您是带有../
),您需要了解,仅仅因为它看起来相对于您正在处理的文件,它可能不是。它与您"输入"的文件有关。
要解决此问题,您应该能够使用类似的东西
include_once(dirname(__FILE__) . '/../../out/DBConnection.php');
但是,您真正应该做的是将应用程序路径放在包含路径中。这样,您将能够执行以下操作:
include_once('out/DBConnection.php');
而且您可以在应用程序中的任何位置执行此操作!
您必须具有以下结构:
DIR1
out
DBconnection.php
root
application
contact.php
因此,从contact.php
内部才能使用 DBconnection.php
,您必须上升 3 个目录。正确的做法是:../../out/DBconnection.php
。