%60%3A%20%D0%9E%D1%82%D0%BA%D0%B0%D0%B7%D0%B0%D0%BD%D0%BE%20%D0%B2%20%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B5%20%D0%BD%D0%B0%20%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BF%D0%B0%D0%BF%D0%BE%D0%BA%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20PHP.png)
У меня есть этот PHP-скрипт:
$dir = FCPATH . 'uploads' . DIRECTORY_SEPARATOR . 'posts'; // is in CodeIngiter
if (!is_dir($dir)) {
mkdir($dir, 755);
}
Который создает папку для хранения изображений постов. Однако я получаю эту ошибку / предупреждение:
Severity: Warning
Message: mkdir(): Permission denied
и я не могу создать папку.
Как это исправить? Моя структура папок выглядит так:
/opt/lampp/htdocs/www/my-site/public/ (uploads/posts) // all folders inside files will generate in php
Дополнительная информация: если я комментирую этот код, вручную создаю папку posts
, а затем пытаюсь загрузить файл, то получаю сообщение об ошибке, сообщающее, что путь назначения недоступен для записи.
Вывод ls -l /opt/lampp/htdocs/www/my-site/
:
drwxrwxr-x 15 lykos lykos 4096 Sep 17 23:08 application
drwxrwxrwx 6 lykos lykos 4096 Sep 29 22:00 public
drwxrwxr-x 8 lykos lykos 4096 Sep 7 12:31 system
Вывод ls -l /opt/lampp/htdocs/www/my-site/public
:
drwxr-xr-x 4 lykos lykos 4096 Sep 18 21:48 css
drwxr-xr-x 2 lykos lykos 4096 Sep 27 19:18 img
-rwxrwxr-x 1 lykos lykos 9872 Sep 17 23:04 index.php
drwxr-xr-x 8 lykos lykos 4096 Sep 27 20:06 js
drwxr-xr-x 2 lykos lykos 4096 Sep 29 20:34 uploads
решение1
Проблема в вашем mkdir()
вызове, а не в Ubuntu.
Согласноваш комментарий, ls -l /opt/lampp/htdocs/www/my-site/public/uploads
не существует, поэтому следует вызвать, mkdir()
передав recursive
параметр:
$dir = '/uploads/posts';
if (!is_dir($dir)) {
mkdir($dir, 755, true);
}