PHP - include () или require () с относительными путями не будут работать на окнах, даже при добавлении __DIR__ - PullRequest
3 голосов
/ 16 февраля 2012

Я читал здесь о проблемах в PHP при использовании include () или required () с относительными путями, и все решения, которые я видел, должны были добавить DIR

В настоящее время я работаю в Windows, и хотя в сообщении об ошибке отображается текущее значение DIR , относительный путь, по-видимому, добавляется в виде строки, а не поднимается на один уровень вверх для пример:

include(__DIR__ . "..\\another_folder\\file_2.php");

выдает следующую ошибку: Предупреждение: include (C: \ xampp \ htdocs \ main_folder .. \ another_folder \ file_2.php) [function.include]: не удалось открыть поток: нет такого файла или каталога в

Есть идеи, что происходит?

Ответы [ 2 ]

21 голосов
/ 16 февраля 2012

Вам необходимо добавить \ после имени каталога:

include(__DIR__ . "\\..\\another_folder\\file_2.php");

. Таким образом, путь будет

C: \ xampp \ htdocs \ main_folder \.. \ another_folder \ file_2.php

вместо

C: \ xampp \ htdocs \ main_folder .. \ another_folder \ file_2.php

Также для переносимости рекомендуется использовать / вместо \, который работает на всех платформах, включая Windows:

include(__DIR__ . "/../another_folder/file_2.php");
4 голосов
/ 16 февраля 2012

Не используйте обратную косую черту в путях в PHP, везде используйте обычные прямые косые черты (/).PHP автоматически переведет на соответствующие разделители каталогов, специфичные для вашей ОС.

При этом посмотрите на сообщение об ошибке подробнее:

 ... lude(C:\xampp\htdocs\main_folder..\another_folder\file_2.php) [func...
                                     ^--- missing a slash here
...