Missing a temporary folder и Failed to write file to disk в WordPress
PHP сначала сохраняет загруженный файл во временную папку и только потом отдаёт его WordPress. Если папки нет, в неё нельзя писать или кончилось место на диске, загрузка обрывается с одной из этих ошибок.
Содержание 7
Что сделать прямо сейчас
- Проверьте, есть ли место на диске — шаг 1.
- Проверьте настройку upload_tmp_dir — шаг 2.
- На обычном хостинге напишите в поддержку — подробнее.
Что означает ошибка
Оба текста — коды ошибок PHP, которые WordPress показывает словами:
| Текст | Код PHP | Что случилось |
|---|---|---|
Missing a temporary folder. | UPLOAD_ERR_NO_TMP_DIR | PHP не нашёл временную папку |
Failed to write file to disk. | UPLOAD_ERR_CANT_WRITE | PHP не смог записать файл во временную папку |
Временную папку задаёт настройка PHP upload_tmp_dir. Если она не задана, PHP берёт системную папку для временных файлов. Если ошибка другая — Unable to create directory, — дело не во временной папке, а в папке загрузок WordPress: смотрите её разбор.
Шаг 1. Проверьте место на диске
На VPS подключитесь к серверу — как это сделать, рассказано в инструкции Как подключиться к VPS по SSH. В примерах папка сайта — /var/www/example.com: подставьте свою. Путь к ней указан в строке root в файле настроек сайта nginx. Введите:
df -hКолонка Use% — сколько занято. Если у строки, где в колонке Mounted on стоит / или /tmp, там 100%, места нет. Как его освободить, рассказано на странице No space left on device.
Шаг 2. Проверьте временную папку
В Ubuntu 24.04 стоит PHP 8.3. Если у вас другая версия, подставьте её номер вместо 8.3 во всех командах — узнать номер можно командой ls /etc/php/. Найдите настройку в файле PHP для сайтов:
grep -n upload_tmp_dir /etc/php/8.3/fpm/php.iniЕсли строка начинается с точки с запятой — ;upload_tmp_dir, — настройка выключена, и PHP берёт системную временную папку. Тогда проверьте место на диске — шаг 1.
Если точки с запятой нет и после знака = стоит путь к папке, проверьте, что эта папка есть. Подставьте свой путь вместо /var/www/tmp:
ls -ld /var/www/tmpЕсли ответ No such file or directory, папки нет. Создайте её и отдайте пользователю, от которого работает PHP. Сначала узнайте его имя:
ps -eo user,comm | grep php-fpmКоманда покажет несколько строк, в первой колонке — имя пользователя. Строка с root — главный процесс PHP, он только раздаёт работу. Нужно имя из остальных строк: от него PHP читает и пишет файлы сайта, например www-data. Затем создайте папку и отдайте её этому пользователю — вместо www-data подставьте его имя:
sudo mkdir -p /var/www/tmpsudo chown www-data:www-data /var/www/tmpПерезапустите PHP и загрузите файл снова:
sudo systemctl restart php8.3-fpmЕсли система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — так и должно быть: наберите пароль и нажмите Enter.
Если сайт на обычном хостинге
Временной папкой PHP и диском сервера на хостинге управляет хостер. Сначала проверьте в панели, не кончилось ли место на вашем тарифе. Если место есть, напишите в поддержку: пришлите текст ошибки и время, когда она появилась.
Тексты сообщений сверены с исходным кодом WordPress 7.1.3. В русской версии WordPress те же сообщения показаны по-русски — сравнивайте по смыслу.
Источники
- Исходный код WordPress 7.1.3: file.php — тексты ошибок загрузки файлов и запрос данных FTP.
- Справка PHP: ошибки загрузки файлов — UPLOAD_ERR_INI_SIZE, UPLOAD_ERR_NO_TMP_DIR и UPLOAD_ERR_CANT_WRITE.
- Справка PHP: настройки ядра — post_max_size, upload_max_filesize, upload_tmp_dir и memory_limit.
- Файл php.ini-production из PHP 8.3.6 — значения по умолчанию: memory_limit 128M, post_max_size 8M, upload_max_filesize 2M.
Сверено 10 октября 2026 года.
Что почитать дальше
Проверено и обновлено: 10.10.2026