Правильные пути к файлам для меня и phpStorm, но неправильные в реальном мире

phpStorm и я согласны, что это безумие, но «неправильные» пути к файлам работают, а «правильные» — нет. Базовая структура.

  |
|------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"

Bizarely (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 как ошибки (говорит, что «путь включает / autoloader.inc.php не найден» и «включающее выражение не разрешено»), в то время как (2), что, как я думал, было «правильным», получает хороший большой зеленый отметьте, но не удается при отладке или при прямом доступе через HTTP: // локальный и т.п.

Я всегда борюсь с этими путями, но как же получается, что phpStorm и я согласны, а в реальном мире говорят: нет!

Думаю, мне придется поставить $_SERVER['DOCUMENT_ROOT'] повсюду (намного проще с Storm вместо обычного!), но все равно боль!

2

Решение

Это правильное поведение.

Страница, которую вы загрузили, находится на /

Там вы включили файл из /includes

И теперь файл, который вы включили, является частью страницы в /

Таким образом, все включения во включенном файле рассматриваются как родственники из / не из /includes

и так далее…

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]