Почему возникает проблема с созданием файлов из PHP-скриптов?

К ошибке при создании файла с помощью PHP-скрипта могут приводить следующие причины:
- на сервере недостаточно свободного дискового пространства;
- указана несуществующая директория (папка/каталог/путь), для сохранения файла;
- недостаточно прав для сохранения файла в указанной директории.

Более подробно о каждом из указанных вариантов.

 

1. На сервере недостаточно свободного дискового пространства.

Получить информацию о доступном дисковом пространстве на сервере вы можете с помощью команды:
df -h

Результат выполнения команды представлен на следующем скриншоте.

На скриншоте выделены дисковое устройство и столбец Avail - доступно 25GB.
Дисковое устройство в зависимости от услуги и метода распределения пространства может быть указано в выводе команды как: /dev/vd[a-z]*, /dev/sd[a-z]* или /dev/mapper/*
В случае, если в столбце Avail (доступно) для дискового устройства будет указано 0 - значит на дисковом устройстве отсутствует свободное пространство.
В этом случае необходимо очистить диск, удалив лишние файлы, а в случае отсутствия таковых - необходимо его расширение.

 

2. Указана несуществующая директория (папка/каталог/путь), для сохранения файла.

Проверить, существует ли указанная директория вы можете с помощью команды:
ls -l [директория]

* [директория] - укажите полный путь к вашей директории, в которой должен быть создан файл.
В данном примере используется директория /home/oleg/www/data/needed

Если директория не существует - будет выведена соответствующая информация.
Если директория существует - будет выведено ее содержимое.

В случае, если директория не существует, ее необходимо создать, либо изменить путь к файлу в PHP-скрипте.
Создать директорию вы можете командой:
mkdir -p [директория]

После чего проверить директорию вы можете указанной ранее командой:
ls -l [директория]

Пример указанных операций продемонстрирован на следующем скриншоте.

 Так как директория в примере отсутствовала, после создания она пуста, о чем и свидетельствует вывод:
total 0

 

3. Недостаточно прав для сохранения файла в указанной директории.

Для выполнения операций с файлами пользователь, от имени которого запускается PHP-скрипт должен иметь необходимые права на директорию и/или изменяемый файл.
Соответственно данному пользователю должны быть предоставлены корректные права.
Узнать, от имени какого пользователя работает веб-сервер Apache (httpd) вы можете используя команду:
ps aufx

Часть вывода команды с интересующими нас процессами представлена на следующем скриншоте.

Имя пользователя указано в первом столбце, в данном случае - Apache
Изменяем владельца (пользователя и группу) для используемой нами директории на Apache командой:
chown apache:apache [директория]

, и проверяем изменение владельца на директорию командой:
ls -l [директория-1]

* в данном примере [директория] - /home/oleg/www/data/needed , а [директория-1] - /home/oleg/www/data
Пример указанных операций продемонстрирован на следующем скриншоте.
 



Вложения 
 
 php.df.png (29.58 КБ)
 php.dir.png (23.27 КБ)
 php.ps.png (185.95 КБ)
 php.ls.png (18.01 КБ)


Если решение вопроса найти не удалось, Вы можете отправить нам заявку:



(3 голос(а))
Эта статья помогла
Эта статья не помогла

Комментарии (0)