Надлежащий способ установить PHP включает путь для *, Отклоняют и Windows

Это надлежащий путь к define включать путь и для *отклоняет и для Windows?

define( 'INCPATH', realpath( dirname( __FILE__ ) ) . '/' );

Отметьте запаздывающую наклонную черту вправо, которую я включал выше. Наклонная черта вправо для, включает/требует то же для обеих ОС, также?

РЕДАКТИРОВАНИЕ (ОБНОВЛЕННЫЙ С ОТВЕТОМ):

Из того, что я могу собраться, мой код ниже является надлежащим способом универсально определить включать/требовать путь и для *, отклоняют и 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()):

ЗАРЕГИСТРИРУЙТЕ полный путь и имя файла файла. Всегда содержит полный путь с разрешенными символьными ссылками.

dirname () возвращаемая строка является путем с любым запаздыванием / удаленный компонент. Ответственный за удаление имени файла.

realpath () Возвраты каноническое (нормализовал/стандартизировал) абсолютный путь на успехе. Получающийся путь не будет иметь никакой символьной ссылки, '/./' или '/../' компоненты. Я предполагаю, что это включено для тщательности потому что __FILE__ уже символьные ссылки твердости. Или возможно это включено для разрешения относительных путей? Так или иначе это, кажется, укрепляет нашу цель.

7
задан Jeff 24 October 2013 в 20:14
поделиться

3 ответа

Прямая косая черта будет работать для обеих ОС, и это правильный вариант.

Я не смог найти абсолютную ссылку на это, но она указана в нескольких местах в руководство по PHP, например здесь и здесь . И это работает для меня, пользователя Windows и Linux.

Наконец, вы можете указать смешанные пути в Windows, например c: \\ apache \\ htdocs \\ myapp / index.php , , и все работает нормально.

8
ответ дан 6 December 2019 в 15:23
поделиться

К удивлению многих, / отлично работает в Windows и MSDOS. Внутри имен путей он работает даже в OpenVMS.

Однако, если вы делаете что-то в PHP для путей, массив будет более удобной структурой, чем строка.

$MYPATH = array ('.', '/usr/lib/', '/usr/share/lib');
2
ответ дан 6 December 2019 в 15:23
поделиться

Или вы можете использовать предопределенную константу PHP DIRECTORY_SEPARATOR, которая выдаст вам разделитель директорий, специфичный для операционной системы. See http://www.php.net/manual/en/dir.constants.php also.

4
ответ дан 6 December 2019 в 15:23
поделиться