mkdir(folder_name) с разрешением 755 в php

Мое веб-приложение размещено в папке /var/www. Я создаю папку из одного из PHP-скриптов веб-приложения. Разрешение по умолчанию для созданной папки — drwx------, то есть 700. Но я хочу, чтобы эта папка имела разрешение не менее 755.

До сих пор я пробовал: mkdir($path, 0755) и chmod($path, 0755) PHP-функции, но безуспешно.

Кто-нибудь знает, как решить мою проблему, пожалуйста?

Заранее миллион благодарностей.


person Bakhtiyor    schedule 22.06.2011    source источник
comment
установите error_reporting( E_ALL ), чтобы убедиться, что вас не предупреждают о недостаточных разрешениях. Команда mkdir не работает? Возможно, у вас нет доступа для записи к местоположению, в которое вы пытаетесь записать (или путь может быть неправильным).   -  person zzzzBov    schedule 23.06.2011
comment
Нет, я сам создаю папку, но, как я уже сказал выше, у нее разрешение 700.   -  person Bakhtiyor    schedule 23.06.2011
comment
@Bakhtiyor, папка уже существует, когда вы пытаетесь ее создать?   -  person zzzzBov    schedule 23.06.2011
comment
Нет, папка создается каждый раз, когда я запускаю скрипт.   -  person Bakhtiyor    schedule 23.06.2011
comment
Аналогичный вопрос stackoverflow.com/questions/5697595/   -  person mhitza    schedule 23.06.2011
comment
Да, umask решит проблему.   -  person Maxim Krizhanovsky    schedule 29.06.2011
comment
Привет, Бахтиёр, у тебя есть решение? Если да, отредактируйте свой ответ.   -  person Prifulnath    schedule 21.02.2017


Ответы (2)


Вы пробовали изменить umask?

Посмотрите здесь: http://nl3.php.net/manual/en/function.umask.php

Самый простой способ:

$oldmask = umask(0);
chmod($path, 0755);
umask($oldmask)
person YoGiN    schedule 29.06.2011

Поскольку у вас есть разрешение по умолчанию 700, это означает, что родительский каталог (каталог, в котором вы пытаетесь создать папку) не имеет разрешения rw для владельца группы или других пользователей. Чаще всего запущенный демон (httpd) не является владельцем родительской папки и, следовательно, не может изменять каталог.

Проще говоря, скрипт php не имеет доступа для изменения или добавления нового каталога. Вам необходимо изменить разрешение для родительской папки как минимум на drwxrw-rw- (или 0755).

Для этого используйте ssh, cpanel или ftp-клиент. Если вы сделаете это с помощью php-скрипта, вы снова столкнетесь с той же проблемой, так как родитель родителя снова будет иметь 0700. ;)

person Saurabh Kumar    schedule 29.06.2011