Использование функции языка PHP mkdir и рекурсивное создание директорий.

В языке PHP есть функция с названием соответствующим команде в операционной системе linux - mkdir, предназначенная для создания директорий по переданному названию директории. В официальной документации на сайте языка PHP не описаны допустимые символы передаваемого названия диретктории при её создании с помощью указанной функции. Тем не менее при разработке кешируюшего прокси(одной из причин разработки которого был факт того, сайт на bitrix медленно работал и решили проксировать запросы через другой сервер, с целью кеширования некоторых страниц) мне требовалось понимать директории с какими названиями могут быть созданы с использованием функции mkdir чтобы как вариант понимать как написать код прокси так, чтобы он мог быть применён с минимальными изменениями и настройкой в других проектах.

Тестовым путём установлено что в операционной системе CentOs 7 с установленной версией интерпретатора PHP 7.3 создание директории в папке исполняемого скрипта корректно сработает при наличии соответствующих прав на папку(в которой находится скрипт) если название создаваемой директории содержит любые символы кроме символа с кодом 0 и символа с кодом 47 который соответствует знаку слеш("/") применяемого в URL интернет адресах, который является разделителем между названиями папок и следовательно в названии папки использоваться не может . Касаемо символа с нулевым кодом в создаваемой папке - данный символ не игнорируется, а именно при его наличии в названии создаваемой директории она создана не будет ни в каком виде. То есть при наличии прав на директории позволяющих создавать в ней директории PHP-скриптом следующие варианты использования функции var_dump(mkdir(chr(0)."xyz"));var_dump(mkdir("x".chr(0)."yz"));var_dump(mkdir("xyz".chr(0))); вернут false во всех случаях и к созданию директорий ни в каком виде(в том числе с игнорированием символа с нулевым кодом) не приведут.

Для того чтобы выяснить что все остальные символы кроме символов с кодами 0 и 47 могут быть переданы PHP функции mkdir и дирректория корректно создастся(при условии наличия соответствующих прав на дирректорию в которой производится создание дирректории) я написал скрипт, код которого находится в листинге ниже.

Функция для рекурсивного создания директорий

Комментарии

Если у Вас возникли вопросы, Вы можете задать их в форме ниже. В частности если Ваш вопрос по Bitrix и что то не получается - можно спросить. Ваш e-mail не публикуется, при этом я отвечу на него если будет что то по теме. Писать необходимо для людей - избегайте сленга, пишите орфографически правильно.

Имя:
E-mail:
Текст комментария:

Вы так же можете прочитать следующие статьи: