Как я могу установить абсолютный путь для функции включения в php над рабочим каталогом?

Я запускаю сценарий из

/wp-content/themes/currenttheme/chat.php

Я хочу включить в приведенный выше php еще один, расположенный в

/forum/chat/index.php

Index.php включает собственные файлы

Я уже пробовал

$root = $_SERVER['DOCUMENT_ROOT'];
include($root."/forum/chat/index.php");

но я получаю эту ошибку

Предупреждение: требуется (D: / My Dropbox / xampp / htdocs / lib / custom.php) [function.require]: не удалось открыть поток: нет такого файла или каталога в D: \ My Dropbox \ xampp \ htdocs \ forum \ chat \ index.php в строке 17

Неустранимая ошибка: require () [function.require]: Не удалось открыть 'D: / My Dropbox / xampp / htdocs / lib / custom.php' (include_path = '.; \ My Dropbox \ xampp \ php \ PEAR') в D: \ My Dropbox \ xampp \ htdocs \ forum \ chat \ index.php в строке 17

(index.php также включает некоторые файлы, но / forum / chat каким-то образом опущен в пути)

тогда я попробовал

$path   = getcwd();
$myfile = "/forum/chat/index.php";
include ($path.$myfile);

и получил эту ошибку:

Предупреждение: include (D: \ My Dropbox \ xampp \ htdocs \ forum / forum / chat / index.php) [function.include]: не удалось открыть поток: нет такого файла или каталога в D: \ My Dropbox \ xampp \ htdocs \ wp-content \ themes \ currenttheme \ chat.php в строке 24

Предупреждение: include () [function.include]: Не удалось открыть 'D: \ My Dropbox \ xampp \ htdocs \ forum / forum / chat / index.php' для включения (include_path = '.; \ My Dropbox \ xampp \ php \ PEAR ') в D: \ My Dropbox \ xampp \ htdocs \ wp-content \ themes \ currenttheme \ chat.php в строке 24


person Baros    schedule 10.04.2010    source источник


Ответы (3)


С index.php проблем нет. Он включается. В сообщении об ошибке говорится о файле custom.php

Просто используйте ту же технику $_SERVER['DOCUMENT_ROOT'] для custom.php

вам нужно добавить / forum / chat вручную, так как путь не может быть пропущен

person Your Common Sense    schedule 10.04.2010
comment
custom.php включен в index.php, и он отлично работает при запуске любым способом, кроме случаев, когда я пытаюсь сделать вышеупомянутое включение - person Baros; 11.04.2010
comment
@Baros И что? Почему бы не отремонтировать его, как я вам сказал? - person Your Common Sense; 11.04.2010

Что-то не так с:

include('../../../forum/chat/index.php');

?

Есть множество причин, по которым опубликованный вами код не работает.

C.

person symcbean    schedule 10.04.2010
comment
Когда я использую его так, как вы написали, я получаю вторую ошибку. Он начинает работать, только если я добавляю еще один / перед первым .. но теперь я получаю первую ошибку. - person Baros; 11.04.2010
comment
использование относительного пути - всегда плохая идея. - person Your Common Sense; 11.04.2010
comment
Я согласен. Но у меня нет выбора 'Предупреждение: include () [function.include]: http: // оболочка отключена в конфигурации сервера с помощью allow_url_include = 0' и 'Предупреждение: include () [function.include]: URL-адрес доступа к файлу отключен в конфигурации сервера ' - person Baros; 11.04.2010
comment
@Col. Shrapnel. Когда дело доходит до стиля программирования, не бывает такого понятия, как «всегда» - хотя я признаю, что обычно используются относительные пути, отличные от '.' плохая идея. - person symcbean; 19.04.2010

использовать этот.

require_once(ABSPATH.'forum/chat/index.php');

здесь ABSPATH = физический путь к корневому каталогу WordPress с завершающей косой чертой

person Alpesh Panchal    schedule 23.12.2015