文件路径在我和phpStorm中是正确的,但在现实世界中是错误的

文件路径在我和phpStorm中是正确的,但在现实世界中是错误的,php,path,phpstorm,relative-path,Php,Path,Phpstorm,Relative Path,phpStorm和我都认为这很疯狂,但“错误”的文件路径可以工作,而“正确”的路径则会失败。基本结构 | |------classes(directory) | | | | | Person.php | |------include(directory) | | | | | db-connect.inc.php | autoloader.in

phpStorm和我都认为这很疯狂,但“错误”的文件路径可以工作,而“正确”的路径则会失败。基本结构

  |
  |------classes(directory)
  |         |
  |         |
  |         Person.php
  |
  |------include(directory)
  |         |
  |         |
  |         db-connect.inc.php
  |         autoloader.inc.php
  |         helper.inc.php
  |
  |
  |index.php
  |etc.php
在我使用的索引中:(1)

在Person.php中,我希望使用:(2)

但问题是:

"Warning: include_once(../include/autoloader.inc.php): failed to open stream:
No such file or directory in C:\xampp\htdocs\dummy\classes\Person.php on line 2"
Bizarely(3)

工作,甚至更奇怪的是这样做(4)

即使我们上了一个目录级别

phpStorm将3和4标记为错误(表示“未找到路径include/autoloader.inc.php”和“未解析包含表达式”),而我认为“正确”的(2)会得到一个漂亮的绿色大勾号,但在调试或通过etc直接访问时失败

我总是在这些道路上挣扎,但为什么phpStorm和我都同意,而现实世界却说不


我想我必须把
$\u服务器['DOCUMENT\u ROOT']
放在所有地方(使用Storm比使用longhand容易得多!),但仍然很痛苦

这是正确的行为

您加载的页面位于
/

在这里,您包含了来自
/includes

现在,您包含的文件是
/

因此,包含文件中的所有包含项都被视为来自
/
的相关项,而不是来自
/includes


等等

在目录树示例中,文件夹名是“includes”,但include语句是“include”-代码或示例中是否有输入错误?您可能希望尝试从includes php文件中获取getcwd,以查看它是否认为您所处的位置。尝试使用更类似于绝对路径的路径,例如
include\u once\uuuu DIR\uuu。“/../include/autoloader.inc.php”--更加可靠,因为这样您就不会给PHP错误解释的机会(例如,因为您可能有复杂的
include\u path
等)。理想情况下,我建议使用类、PSR-4和类自动加载——在这种情况下,只有少数include/require,其余的将自动加载。我不明白include应该如何使用相同的路径。当您在页面中导入文件时,包含的文件将成为页面的一部分,并且从页面中对目录树的引用与树中的页面位置相关,而不是与任何最终包含的文件的位置相关。
include_once "../include/autoloader.inc.php";
include_once "../include/db-connect.inc.php";
include_once "../include/helper.inc.php";
"Warning: include_once(../include/autoloader.inc.php): failed to open stream:
No such file or directory in C:\xampp\htdocs\dummy\classes\Person.php on line 2"
include_once "/../include/autoloader.inc.php";
include_once "/../include/db-connect.inc.php";
include_once "/../include/helper.inc.php";
include_once "include/autoloader.inc.php";
include_once "include/db-connect.inc.php";
include_once "include/helper.inc.php";