Почему в php не создается директория с помощью mkdir?
Почему is_dir() и file_exists() видят директорию, а mkdir() не может создать новую в той же папке?
К примеру у меня должна быть директория /var/www/my_site/main, но она пока еще не создана. Я хочу проверить, что такого пути нет и создать новую папку с помощью mkdir().
Но получаю ошибку:
Код:
Как исправить?
К примеру у меня должна быть директория /var/www/my_site/main, но она пока еще не создана. Я хочу проверить, что такого пути нет и создать новую папку с помощью mkdir().
Но получаю ошибку:
Warning: mkdir() [function.mkdir]: Permission denied in ...
Код:
$path = '/var/www/my_site/main';
if (!file_exists($path) || !is_dir($path)) {
mkdir($path);
}
Как исправить?
Нравится:
1
Полезно:
1
Может быть полезно
Показать больше
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Попробуйте в mkdir передать параметры для создания папки с правами 777 и чтобы родительские каталоги создавались рекурсивно с теми же правами:
$path = '/var/www/my_site/main';
if (!file_exists($path) || !is_dir($path)) {
mkdir($path, 0777, true);
}
Нравится:
2
Полезно:
1
Не нужно выдавать права доступа 777 для всех папок. Так как это дает права на запись для всех.
Лучше проверьте и убедитесь, что права на папку /var/www/my_site принадлежит нужному пользователю.
К примеру в Ubuntu для web сервера Apache пользователь и группа www-data (У вашего web сервера может быть другой пользователь и другая группа).
Посмотрите какому пользователю принадлежит папка. Проверить можно так:
Если на папку назначен пользователь, который не принадлежит вашему web серверу, то пробуем назначить необходимого вам пользователя. Приведу пример на www-data группе и пользователе.
Назначаем www-data пользователя и группу для вашей папки:
Разрешаем права за чтение и запись для всех членов группы www-data:
Лучше проверьте и убедитесь, что права на папку /var/www/my_site принадлежит нужному пользователю.
К примеру в Ubuntu для web сервера Apache пользователь и группа www-data (У вашего web сервера может быть другой пользователь и другая группа).
Посмотрите какому пользователю принадлежит папка. Проверить можно так:
ls -la /var/www/my_site
Если на папку назначен пользователь, который не принадлежит вашему web серверу, то пробуем назначить необходимого вам пользователя. Приведу пример на www-data группе и пользователе.
Назначаем www-data пользователя и группу для вашей папки:
sudo chown -R www-data:www-data /var/www/my_site
Разрешаем права за чтение и запись для всех членов группы www-data:
sudo chmod -R g+rw /var/www/my_site
Нравится:
2
Полезно:
1