Как я могу определить DIRECTORY_SEPARATOR для платформ Windows и Linux? - PullRequest
22 голосов
/ 08 июля 2011

Теперь я создаю небольшое приложение PHP, здесь у меня проблема с использованием пути к файлу, потому что в Windows используется этот тип местоположения C:\Some\Location\index, но в Linux /www/app/index, поэтому, когда я определяю путь, используя этот /, но когда приложение запустить в окне машины это должно быть проблемой для этого /.

Итак, здесь я хочу определить DIRECTORY_SEPARATOR для платформы Windows и Linux.

Ответы [ 5 ]

45 голосов
/ 08 июля 2011

PHP принимает и \, и / в качестве допустимых разделителей пути во всех ОС.Так что просто используйте / в вашем коде

18 голосов
/ 08 июля 2011

Для удобства вы можете написать определение более короткой константы:

DEFINE('DS', DIRECTORY_SEPARATOR); 

, а затем написать свой путь как:

$path = 'www'.DS.'app'.DS.'index'; 

Или я не понимаю ваш вопрос?

6 голосов
/ 08 июля 2011

Пожалуйста, смотрите Предопределенные константы PHP

Возможно, это уже определено в вашем скрипте, попробуйте вызвать DIRECTORY_SEPARATOR, посмотрите, имеет ли оно какое-либо значение

3 голосов
/ 08 июля 2011

PHP понимает '\' и '/' как разделители пути, независимо от того, в какой системе вы находитесь.Я предпочитаю использовать '/' (способ Unix) во всем моем коде.Когда вы находитесь в окне Windows, и вам необходимо указать полный путь к Windows / DOS, у меня будет простая, неразрушающая функция

function dosPath($path){
    return str_replace('/', '\\', $path);
}

Пример:

$drive = 'C:';
$path = '/tmp/uploads';

echo dosPath($drive.$path);
echo dosPath($path);
0 голосов
/ 08 июля 2011

В большинстве случаев Windows принимает прямые косые черты, так что вы можете их использовать. Вы даже можете использовать смесь, и она не будет жаловаться.

Убедитесь, что ваш пакет юнит-тестов также работает и в Linux!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...