我有一个目录根目录:
index.php
includes/
template.php
testfile.php
phpFiles/
processInput.php
testfile.php
Run Code Online (Sandbox Code Playgroud)
index.php文件:
require_once("includes/template.php");
Run Code Online (Sandbox Code Playgroud)
的template.php:
require_once("includes/phpFiles/processInput.php")
Run Code Online (Sandbox Code Playgroud)
processInput.php:
require_once("testfile.php")
require_once("../testfile.php")
Run Code Online (Sandbox Code Playgroud)
当您运行index.php时,此代码将起作用,当然,当您运行template.php时,它将不起作用.
如您所见,index.php包含template.php,就像普通的一样.但是在template.php中,你必须包括如果你在index.php所在的目录中.但是,在processInput.php中,你包括就好像你在processInput.php所在的目录中一样.
为什么会发生这种情况,如何修复它以使包含路径始终是需要完成的文件的目录?第二个包含文件与请求的文件具有相同的包含路径,但下一个文件没有.
谢谢你的帮助!
编辑:奇怪的是我已经在类文件夹中包含了类.并且它包含了应该包含的其他文件,即使路径是相对的.为什么会发生这种情况,我该如何解决?
非常重要的编辑:我刚刚意识到这一切都是因为在我的例子中,include/phpFiles/processInput.php中的包含在同一目录中包含一个文件:require_once("同一dir.php中的文件"); 这就是原因.如果你要包含一个不指定文件名以外的文件,那么include_path实际上就是写入require的文件所在的目录.可以有人确认吗?
使用绝对路径.
require_once($_SERVER['DOCUMENT_ROOT']."/includes/phpFiles/processInput.php");
Run Code Online (Sandbox Code Playgroud)
对所有required文件使用类似的表单,无论您身在何处,它们都能正常工作.