---
title: "Cómo solucionar el error «Falta un directorio temporal» en WordPress"
description: "El error «Falta un directorio temporal» aparece cuando WordPress no encuentra una carpeta temporal de PHP que pueda utilizar para recibir archivos, preparar imágenes, descargar actualizaciones o compl..."
url: https://wpdirecto.com/falta-un-directorio-temporal/
date: 2018-01-30
modified: 2026-09-11
author: "MyR"
image: https://wpdirecto.com/wp-content/uploads/2026/09/directorio-temporal-php-wordpress.png
categories: ["Rendimiento"]
tags: ["error", "error de WordPress", "errores de WordPress", "Falta un directorio temporal", "permisos", "php", "subir archivos", "wp-config.php"]
type: post
lang: es
---

# Cómo solucionar el error «Falta un directorio temporal» en WordPress

**El error «Falta un directorio temporal» aparece cuando WordPress no encuentra una carpeta temporal de PHP que pueda utilizar** para recibir archivos, preparar imágenes, descargar actualizaciones o completar otras operaciones antes de mover los datos a su ubicación definitiva. No suele ser un fallo del editor ni de la biblioteca multimedia, aunque se descubra justo al intentar subir una imagen.

La solución antigua que circula por Internet consiste en crear `wp-content/temp` y darle permisos 777. Puede hacer que el aviso desaparezca, pero abre la puerta a que cualquier proceso del servidor escriba en esa carpeta. Hoy conviene empezar por la configuración real de PHP y dejar los permisos en el mínimo necesario.

## Qué significa exactamente este error

Cuando subes una imagen desde **Medios > Añadir nuevo**, el navegador envía el archivo al servidor. PHP lo guarda primero en una ubicación temporal y WordPress lo valida, lo procesa y lo mueve después a la carpeta de subidas, normalmente dentro de `wp-content/uploads`. Si PHP no tiene una carpeta temporal válida o el proceso no puede escribir en ella, WordPress no llega a completar la operación.

El mismo problema puede aparecer al instalar o actualizar plugins y temas, al importar un archivo, al generar ciertos paquetes o cuando una extensión necesita crear un fichero intermedio. Por eso el síntoma no siempre es «no puedo subir imágenes»: también puede ser un actualizador que falla o un aviso del sistema de salud.

La función [get_temp_dir() de WordPress](https://developer.wordpress.org/reference/functions/get_temp_dir/) busca una ubicación temporal que pueda escribirse. En la versión actual del código comprueba primero `sys_get_temp_dir()`, después la directiva `upload_tmp_dir` de PHP, luego `WP_CONTENT_DIR` y, como último recurso, `/tmp/`. Si no encuentra una ubicación válida, puedes definir `WP_TEMP_DIR` en `wp-config.php`.

## Antes de cambiar nada, identifica dónde falla

No empieces creando carpetas al azar. El PHP que utiliza la consola puede tener una configuración distinta del PHP que atiende las peticiones web, especialmente cuando el servidor usa PHP-FPM, varios dominios o varias versiones de PHP. Que `php -i` muestre una ruta correcta en la terminal no garantiza que el proceso web vea la misma ruta.

- Comprueba la versión de PHP activa para el sitio y no solo la versión instalada en la consola.
- Revisa `upload_tmp_dir`, `sys_temp_dir` y `open_basedir` en la configuración que usa PHP-FPM o el servidor web.
- Comprueba que la ruta existe, que no está llena y que el usuario del proceso PHP puede escribir en ella.
- Revisa si el alojamiento aplica restricciones como jaulas, políticas de seguridad o límites por cuenta.

En un alojamiento compartido quizá no tengas acceso a `php.ini` ni al grupo del proceso. En ese caso, la comprobación más útil es abrir un ticket con el proveedor y pedirle que confirme la ruta temporal efectiva para ese dominio y ese pool de PHP-FPM. Si te responde con una ruta, pregunta también qué usuario debe ser su propietario y qué permisos recomienda.

## Comprueba la configuración de PHP

PHP utiliza `upload_tmp_dir` para almacenar temporalmente los archivos recibidos mediante una subida HTTP. La directiva debe apuntar a una carpeta existente y escribible por el usuario con el que se ejecuta PHP. Si no está definida, PHP intenta usar la carpeta temporal del sistema. La documentación oficial de [las directivas principales de php.ini](https://www.php.net/manual/en/ini.core.php) explica también que PHP puede recurrir a la carpeta temporal del sistema si la ruta configurada no es válida.

Para comprobar la configuración del PHP de la terminal puedes utilizar:

```
php --ini
php -i | grep -E 'upload_tmp_dir|sys_temp_dir|open_basedir'
php -r 'echo sys_get_temp_dir(), PHP_EOL;'Lenguaje del código: JavaScript (javascript)
```

Estas órdenes sirven como primera pista, pero no sustituyen la comprobación del PHP web. Para conocer la configuración de PHP-FPM necesitas revisar el panel del alojamiento, el pool correspondiente o la información que te facilite el proveedor. No dejes un archivo público de `phpinfo()` en producción: muestra demasiados datos sobre el servidor y, si lo creas para una prueba, elimínalo al terminar.

La función [sys_get_temp_dir()](https://www.php.net/manual/en/function.sys-get-temp-dir.php) devuelve la carpeta que PHP utiliza por defecto para los archivos temporales. En sistemas Linux suele ser `/tmp`, aunque la ruta efectiva puede verse afectada por la configuración del servicio y por el entorno en el que se ejecuta PHP.

## Solución preferente: corrige PHP en el servidor

Si administras el servidor, crea una carpeta temporal dedicada para el sitio o para el pool de PHP-FPM, fuera de la zona pública cuando sea posible. Después configura `upload_tmp_dir` y, si tu entorno lo necesita, `sys_temp_dir` para que apunten a esa ubicación. La ruta debe existir antes de reiniciar el servicio y debe pertenecer al usuario o grupo que ejecuta PHP.

```
upload_tmp_dir = /var/lib/php/wp-example-tmp
sys_temp_dir = /var/lib/php/wp-example-tmpLenguaje del código: JavaScript (javascript)
```

La ruta del ejemplo no es universal. Sustitúyela por una ubicación válida en tu sistema y no copies el bloque sin saber qué usuario ejecuta el sitio. En un servidor con varios alojamientos, una carpeta compartida entre cuentas puede mezclar archivos temporales y permisos. Es más seguro separar los directorios cuando la configuración del proveedor lo permita.

Después de cambiar `php.ini`, la configuración del pool o los valores del servicio, reinicia el PHP que atiende la web. En muchos servidores Linux será PHP-FPM; en otros, el proveedor ofrece un botón para reiniciar la versión activa. Si no reinicias el servicio, WordPress puede seguir viendo la configuración anterior.

Comprueba también el espacio libre y los inodos. Una carpeta puede tener permisos correctos y aun así rechazar archivos porque el disco está lleno o porque el sistema ha alcanzado el número máximo de ficheros. Puedes revisar ambos valores con herramientas del servidor o pedir la comprobación al alojamiento.

## Solución alternativa con WP_TEMP_DIR

Si no puedes cambiar `php.ini`, WordPress permite indicar una ruta temporal con la constante `WP_TEMP_DIR`. La propia referencia de [get_temp_dir()](https://developer.wordpress.org/reference/functions/get_temp_dir/) contempla este recurso cuando no encuentra una carpeta escribible. Úsalo como una solución controlada y no como excusa para abrir permisos a todo el servidor.

Crea primero una carpeta privada con el propietario y los permisos que correspondan al usuario de PHP. Después añade esta línea en `wp-config.php`, antes del comentario que marca el final de la edición:

```
define( 'WP_TEMP_DIR', '/ruta/privada/wp-example-tmp' );Lenguaje del código: JavaScript (javascript)
```

`/ruta/privada/wp-example-tmp` es un marcador: debes sustituirlo por la ruta real. No pongas una ruta que no exista ni una carpeta a la que el proceso PHP no tenga acceso. Si tu alojamiento solo permite crearla dentro de `wp-content`, pregunta antes al proveedor y evita guardar en ella archivos permanentes o accesibles desde el navegador.

Si la carpeta está dentro de la raíz pública, aplica las restricciones que recomiende tu servidor para impedir que se ejecuten scripts o se descarguen archivos temporales. No existe una regla de servidor válida para todos los alojamientos: Apache, Nginx, LiteSpeed y los paneles gestionados pueden utilizar sintaxis y capas distintas. La opción más limpia sigue siendo una carpeta fuera del directorio público.

## Los permisos correctos no son 777

Los permisos 777 permiten leer, escribir y ejecutar para propietario, grupo y cualquier otro usuario del sistema. Es una configuración demasiado abierta para una carpeta que puede recibir archivos procesados por PHP. Además, cambiar a 777 no arregla una ruta mal configurada, un propietario incorrecto, una restricción de `open_basedir` o un disco lleno.

El permiso adecuado depende del usuario y del grupo del servicio. En muchos servidores bastará con que el propietario de la carpeta sea el usuario de PHP y que la carpeta tenga permisos 750 o 755; en otros hará falta un grupo compartido y 770. No hay que elegir el número por costumbre: debe permitir escribir al proceso correcto y bloquear al resto.

```
ls -ld /ruta/privada/wp-example-tmp
namei -l /ruta/privada/wp-example-tmp
```

Estas órdenes ayudan a ver permisos y propietarios en Linux. Si no tienes acceso, utiliza el gestor de archivos del alojamiento o pide al soporte que confirme ambos valores. Evita modificar permisos de toda la instalación de WordPress para solucionar una sola carpeta: amplía el riesgo y puede ocultar el origen del problema.

## Revisa wp-content/uploads, pero no lo confundas con la carpeta temporal

La carpeta temporal de PHP y la carpeta final de subidas cumplen funciones distintas. PHP recibe primero el archivo en su directorio temporal; WordPress lo mueve después al directorio de medios. La función [wp_upload_dir()](https://developer.wordpress.org/reference/functions/wp_upload_dir/) devuelve la ruta y la URL de la carpeta de subidas y avisa si WordPress no puede crearla.

Si el mensaje aparece junto a errores de permisos en la biblioteca multimedia, revisa también `wp-content/uploads`, sus subdirectorios por año y mes y el usuario propietario. No cambies toda la carpeta a 777. Corrige el propietario y concede escritura solo donde WordPress realmente la necesita.

También conviene comprobar que la opción de subidas y la URL de medios no apuntan a una ruta antigua. Después de una migración, una restauración o un cambio de servidor, WordPress puede conservar una configuración que ya no coincide con la estructura actual. Nuestra [guía para migrar WordPress](https://wpdirecto.com/como-migrar-un-wordpress-de-manera-fiable-sin-morir-en-el-intento/) incluye comprobaciones de rutas y pruebas posteriores que pueden venirte bien en ese caso.

## Otros motivos por los que puede persistir el error

- **PHP-FPM usa otro usuario:** la carpeta pertenece al usuario de la terminal o del panel, pero no al proceso web.
- **open_basedir bloquea la ruta:** PHP ve el directorio, pero la política del alojamiento impide acceder a él.
- **SELinux o AppArmor:** el sistema permite la ruta en sus permisos normales, pero una política adicional bloquea la escritura.
- **Disco lleno o sin inodos:** no se pueden crear archivos aunque la carpeta sea escribible.
- **Directivas de subida:** `file_uploads` puede estar desactivada o el tamaño de la petición puede superar los límites de PHP.
- **Caché de configuración:** PHP-FPM, OPcache o el panel pueden seguir sirviendo valores antiguos después de un cambio.
- **Contenedor o jaula del alojamiento:** la ruta existe en el sistema anfitrión, pero no dentro del entorno aislado del sitio.

Si has corregido la ruta y los permisos y el error continúa, revisa el registro de PHP-FPM y del servidor web justo después de intentar una subida. El mensaje concreto suele indicar si se trata de una ruta inexistente, un problema de acceso, una política de seguridad o un límite de espacio.

## Cómo comprobar que la solución funciona

1. Abre una ventana privada e inicia sesión con una cuenta que tenga permisos normales de edición.
2. Sube una imagen pequeña desde la biblioteca de medios y comprueba que se genera la miniatura.
3. Prueba una imagen con un nombre y un formato habituales, sin utilizar de entrada un archivo enorme.
4. Actualiza un plugin o tema en una copia de pruebas y verifica que el proceso puede descargar y descomprimir archivos.
5. Revisa que el archivo termine en `wp-content/uploads` y que no queden ficheros temporales accesibles desde Internet.
6. Si existe una tienda o un formulario, comprueba también sus subidas y procesos relacionados.

Cuando todo funcione, elimina cualquier archivo de diagnóstico que hayas creado y guarda la ruta, el propietario y la configuración aplicada. Tenerlo documentado te ahorrará tiempo en la próxima migración o al cambiar de versión de PHP. Si el problema era del proveedor, conserva también su respuesta para que quede claro qué valores necesita el sitio.

## Qué no debes hacer

- No pongas permisos 777 como primera respuesta.
- No publiques un archivo con `phpinfo()` para dejarlo accesible permanentemente.
- No borres carpetas del sistema ni cambies la ruta global de todos los sitios sin saber qué servicios la utilizan.
- No des permisos de administrador de WordPress para intentar arreglar un problema del servidor.
- No confundas `upload_tmp_dir` con `wp-content/uploads`: una es temporal y la otra guarda los medios.

Antes de aplicar cambios en producción, haz una copia de seguridad y revisa los consejos de [seguridad de WordPress](https://wpdirecto.com/10-consejos-para-mejorar-la-seguridad-de-wordpress/). Si tu instalación necesita una puesta a punto general, también puedes repasar nuestros [consejos de rendimiento](https://wpdirecto.com/consejos-para-mejorar-el-rendimiento-de-wordpress/) y las recomendaciones para mantener WordPress actualizado.

## Conclusión

«Falta un directorio temporal» suele apuntar a PHP o al servidor, no a WordPress. La reparación correcta consiste en encontrar la ruta temporal efectiva, comprobar espacio, propietario y permisos, y hacer que PHP-FPM pueda escribir sin abrir la carpeta a todo el sistema.

Si no puedes tocar la configuración del alojamiento, `WP_TEMP_DIR` ofrece una salida razonable siempre que la carpeta esté bien protegida. La vieja receta de crear una carpeta pública con permisos 777 debe quedar fuera del tutorial: puede ocultar el problema y deja una configuración difícil de defender.

**Fuentes:** [referencia de get_temp_dir() en WordPress](https://developer.wordpress.org/reference/functions/get_temp_dir/), [referencia de wp_upload_dir()](https://developer.wordpress.org/reference/functions/wp_upload_dir/), [directivas de archivos de PHP](https://www.php.net/manual/en/ini.core.php) y [sys_get_temp_dir()](https://www.php.net/manual/en/function.sys-get-temp-dir.php).
