PHP

PHP считает прямой и обратный слеши в пути файла за разные символы! Что делать?

Это меня доводит до белого каления! Как с этим бороться?
Почему бы в PHP не сделать так, чтобы все функции жрали оба типа слешей, а возвращали исключительно пути с прямыми слешами?
Это же мощный источник багов.
В пхп есть функция которая выпрямляет слеши
realpath() вернет нормальные для этой ОС слеши, но только если передали валидный путь к файлу, если не валидный слеши она исправлять не будет а вернёт false, и если все же хочется их пофиксить то можно сделать замену функцией str_replace
Сергей Суранчинов
Сергей Суранчинов
3 241
Лучший ответ
Можно принудительно менять все \ на / - Windows прекрасно понимает такие пути, если они используются в системных вызовах, а не в командной строке.

Можно использовать стандартную константу DIRECTORY_SEPARATOR - чтобы в любой системе работать с правильным разделителем.

Можно использовать стандартную константу PHP_OS_FAMILY - чтобы подключать версию функции, зависящую от ОС.

P.S. 99% существующего PHP-кода работает в *NIX, где проблем со слешами возникнуть не может. Но в Windows слэши - это только вершина айсберга.
Bairam Tairov
Bairam Tairov
97 249
Сергей Самойлов Так проблема в том, что некоторые функции в PHP могут подавиться, если им подсунуть слэш не того вида. :(
Кто вообще додумался использовать обратные слэши в путях файлов? Это сделали специально, чтобы над кодерами издеваться.
Сергей Самойлов У меня OpenServer под виндой запущен - до загрузки на хостинг ещё дело не дошло.
Сергей Самойлов DIRECTORY_SEPARATOR нужен, чтобы сайт не крашился при переносе с UNIX под Windows, в которой используются обратные слэши?
Bairam Tairov В Windows даже банальный chmod работает не так, как в Linux. А многих систмено-зависимых библиотек (начиная с PCNTL) просто нет.
Прямой слеш это / знак деления, по сути нормальный наклон при письме, а вон ненормальный слеш как раз обратный \ и вот его не надо было бы вообще делать для путей... но так как «в MS-DOS, потому что уже была задействована / для указания ключей командной строки (оставшегося в наследство от CP/M, где MS-DOS команда "dir /w" писалась как "dir/w")»
Так что разные это символы, что уж поделать. Хочешь, то приводи своей функцией все к прямым слешам
Павел Лашутин
Павел Лашутин
61 410
Лол, отккрой ларавал и почитай код его с недельку, а то ты так всю жизнь будешь костыли и баги генерить
АР
Артем Реутов
74 425
Сергей Самойлов Кто вообще додумался использовать обратные слэши в путях файлов? Это сделали специально, чтобы над кодерами издеваться.
Сергей Самойлов Бил Гейтс говнокодер ещё тот. Это из-за него тварюки теперь кодеры под виндой мучаются с обратными слэшами.
В никсах же разрешён только прямой слэш или я ошибаюсь?
Alex K Бил гейц вообще не программист, он купил компанию microsoft со всеми программистами.