От PHP documentation:
файлы включены в основанный на пути к файлу данного или, если иное не указано, указанный в include_path. Если файл не найден в include_path, включает в себя, наконец, проверить в собственном каталоге вызывающего сценария и текущей рабочей директории перед отказом
Так current working directory (УХО) имеет важное значение при включении других файлов. Он может быть получен getcwd()
.
Если ваша структура каталогов выглядит следующим образом
rootdir/
include/
init.rc
workbench.rc
index.php
тогда require('include/init.rc')
будет работать только тогда, когда rootdir/
является УХО или является частью пути поиска. Аналогично, require('init.inc')
предполагает, что CWD равен rootdir/include/
. Поскольку текущий рабочий каталог может измениться, это idomatic в PHP, чтобы использовать более надежные
// in index.php
require(__DIR__ . '/include/init.rc');
// in workbench.rc
require(__DIR__ . '/init.rc');
Тогда require
будет работать независимо от УХО. Это работает, потому что magic constant __DIR__
заменяется на абсолютном пути к файлу, который содержит константу без разделителя каталогов завершающего, например
- в
index.php
, __DIR__
является D:\path\to\rootdir
и
- в
include/init.rc
, __DIR__
является D:\path\to\rootdir\include
.
Вы должны быть более ясными. Вы используете PHP с Apache или CLI? Какова структура вашего каталога? – Lumen
Я работаю с Eclipse и использую XDebug. Приложение настроено, и оно запущено как приложение CLI, но я также установил wamp и сервер Wamp Server все еще работает. Проводник очень прост. У меня есть корень и включенный каталог. – peter70
Когда я помещаю код в "include/init.inc": set_include_path (get_include_path() .PATH_SEPARATOR. 'D: \ ... мой путь ... \ include'); то он отлично работает. Но до сегодняшнего дня не было необходимости ... – peter70