Вы могли бы сделать следующие
function makedirs($dirpath, $mode = 0775, $recursive = true) {
$oldMask=umask(002);
$status = is_dir($dirpath) || mkdir($dirpath, $mode, $recursive);
umask($oldMask);
return $status;
}
$dir = 'path/to/folder/'
makedirs($dir, 0775);
Примечание: Хотя вы можете использовать umask (0), чтобы разрешить даже 777 разрешений. Это не рекомендуется, поскольку это может создавать проблемы с безопасностью.
Редактировать
Попробуйте широкие настройки системы ценностей Umask для всех пользователей или для себя, чтобы удалить код UMASK из PHP. Хотя приведенный выше код будет работать, установка umask в php-скриптах не рекомендуется.
Согласно Руководство Страница PHP
Избегайте использования этой функции в многопоточных веб-серверов. Лучше изменить права доступа к файлу с помощью chmod() после создания файла. Использование umask() может привести к неожиданному поведению одновременного запуска скриптов и самого веб-сервера, поскольку все они используют один и тот же umask.
Вы можете настроить umask в файле/etc/bashrc или/etc/profile для всех пользователей. По умолчанию большинство дистрибутивов Linux устанавливают его на 0022 (022) или 0002 (002). Открыть/и т.д./профиль или файл ~/.bashrc, введите:
# vi /etc/profile
ИЛИ
$ vi ~/.bashrc
Append/изменить следующие строки к установке нового: биты полномочий umask 022
Сохраните и закройте файл. Изменения вступят в силу после следующего входа в систему. Все пользователи UNIX могут переопределять значения по умолчанию umask системы в файле/etc/profile, ~/.profile (оболочка Korn/Bourne) ~/.cshrc (оболочки C), ~/.bash_profile (оболочка Bash) или ~/.login file (определяет пользовательскую среду при входе в систему).
Источник http://www.cyberciti.biz/tips/understanding-linux-unix-umask-value-usage.html
Проверить значение Umask. вы можете ввести umask в оболочку, чтобы узнать значение маски.Я предполагаю, что ваше значение umask равно 022 – user3425867
'$ dir = 'path/to/folder /' makedirs ($ dir, 0775)' Это неполное, если это то, что вы действительно используете. Если это псевдокод, отправьте соответствующий синтаксис. –
'$ mode = 0775' ведущий ноль, вероятно, рассматривается как восьмеричная битва из-за пользовательской функции. Попробуйте процитировать его и так же для внутри 'makedirs ($ dir, 0775)'. –