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

File paths right by me and phpStorm but wrong in real world

phpStorm 和我同意这很疯狂,但是 "wrong" 文件路径有效,而 "right" 文件路径失败。基本结构。

  |
  |------classes(directory)
  |         |
  |         |
  |         Person.php
  |
  |------include(directory)
  |         |
  |         |
  |         db-connect.inc.php
  |         autoloader.inc.php
  |         helper.inc.php
  |
  |
  |index.php
  |etc.php

在我使用的索引中:(1)

include_once "include/autoloader.inc.php";
include_once "include/db-connect.inc.php";
include_once "include/helper.inc.php";

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

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"

奇怪 (3)

include_once "/../include/autoloader.inc.php";
include_once "/../include/db-connect.inc.php";
include_once "/../include/helper.inc.php";

有效,甚至更奇怪 (4)

include_once "include/autoloader.inc.php";
include_once "include/db-connect.inc.php";
include_once "include/helper.inc.php";

即使我们在上一级目录!

phpStorm 将 3 和 4 标记为错误(表示 "Path include/autoloader.inc.php not found" 和 "Include expression is not resolved"),而 (2),我认为是 "right",得到一个漂亮的大绿色勾号但是调试失败或通过 http://localhost 等直接访问时失败

我总是为这些路径问题而苦恼,但为什么我和 phpStorm 都同意,而现实世界却说不!

我想我必须把 $_SERVER['DOCUMENT_ROOT'] 放在所有地方(用 Storm 比普通写更容易!)但仍然很痛苦!

这是正确的行为。

您加载的页面在/

您包含了来自 /includes

的文件

现在您包含的文件是 /

中页面的一部分

所以包含文件中的所有包含都被视为来自 / 而不是来自 /includes

的亲戚

等等...