PHP:require不能正常工作

Stu*_*rts 1 php

我有一个目录根目录:

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的文件所在的目录.可以有人确认吗?

Nie*_*sol 5

使用绝对路径.

require_once($_SERVER['DOCUMENT_ROOT']."/includes/phpFiles/processInput.php");
Run Code Online (Sandbox Code Playgroud)

对所有required文件使用类似的表单,无论您身在何处,它们都能正常工作.