Это правильный путь к define
включаемому пути для и * nix, и Windows ?
define( 'INCPATH', realpath( dirname( __FILE__ ) ) . '/' );
Обратите внимание на завершающий слеш, который я включил выше. Является ли косая черта для включений / требуется одинаковой для обеих ОС?
РЕДАКТИРОВАТЬ (ОБНОВЛЕНО ОТВЕТОМ):
Исходя из того, что я могу извлечь, мой код ниже является правильным способом универсального определения пути include / require для * nix и ОС Windows. Не стесняйтесь исправлять что-либо в комментариях ниже.
Меня смутило то, что я видел много примеров замены back-slashes (\)
на forward-slashes(/)
. Исходя из некоторых ответов ниже, это не нужно.
Итак, последний правильный код (для пуриста):
define( 'INCPATH', realpath( dirname( __FILE__ ) ) . DIRECTORY_SEPARATOR );
Этот код дает следующие результаты:
*nix: /path/to/the/file/
Windows: C:\Path To\the\file\
Краткое объяснение, наш путь изнутри (__FILE__
) наружу (realpath()
):
FILE Полный путь и имя файла файла. Всегда содержит абсолютный путь с разрешенными символическими ссылками.
dirname () Возвращаемая строка - path с удаленным конечным элементом / компонентом. Ответственный за удаление имени файла.
realpath () Возвращает канонизированный (нормализованный / стандартизированный) абсолютный путь в случае успеха. Полученный путь не будет иметь символической ссылки, компонентов '/./'
или '/../'
. Я предполагаю, что это включено для тщательности, потому что __FILE__
уже разрешает символические ссылки. Или, может быть, он включен для разрешения относительных путей? В любом случае, это, кажется, укрепляет нашу цель.