Cómo arreglar el error 'Failed to open stream: Permission denied' en WordPress
¿Qué significa "Failed to open stream: Permission denied" en WordPress?
Si estás leyendo esto, es muy probable que hayas visto un mensaje de error parecido a este en tu sitio web:
Warning: failed to open stream: Permission denied in /home/usuario/public_html/wp-content/themes/mi-tema/functions.php on line 45
O quizás algo como:
Fatal error: Uncaught Error: Failed opening required file '...' (include_path='...') in /home/usuario/public_html/wp-config.php on line 87
No te preocupes, no has roto nada. Este es uno de los errores más comunes en WordPress y, afortunadamente, tiene solución. En este artículo te voy a explicar paso a paso, y en un lenguaje muy sencillo, cómo arreglar el error "Failed to open stream: Permission denied" en WordPress.
Vamos a ver qué significa, por qué ocurre y, sobre todo, cómo solucionarlo de forma segura y definitiva.
¿Qué causa el error "Permission denied" en WordPress?
Antes de lanzarnos a arreglar nada, es importante que entiendas qué está pasando. Este error aparece cuando WordPress (o el servidor) intenta leer, escribir o ejecutar un archivo y no tiene los permisos necesarios para hacerlo.
Piensa en los permisos WordPress como las llaves de una casa. Si el servidor tiene la llave equivocada, no puede abrir la puerta. Y si no puede abrir la puerta, no puede leer el archivo que hay dentro. El resultado es el error que ves en pantalla.
Las causas más habituales son:
- Permisos incorrectos en archivos o carpetas (el clásico
chmodmal configurado). - El propietario del archivo no es el correcto (esto pasa mucho al migrar sitios web).
- Un plugin o tema intenta escribir en un archivo que no tiene permisos de escritura.
- Un archivo se ha subido con permisos demasiado restrictivos (por ejemplo,
000o400). - El servidor usa PHP como módulo de Apache en lugar de PHP-FPM (esto afecta a cómo se gestionan los permisos).
El error puede aparecer en cualquier parte: en el panel de administración, en la portada, al subir una imagen, al instalar un plugin, o incluso en el archivo wp-config.php.
Paso 1: Identifica exactamente qué archivo o carpeta da el error
Lo primero que debes hacer es leer el mensaje de error completo. No te quedes solo con la primera línea. El mensaje te dice exactamente qué archivo está causando el problema.
Por ejemplo:
Warning: failed to open stream: Permission denied in /home/miweb/public_html/wp-content/plugins/mi-plugin/includes/class-mi-plugin.php on line 42
En este caso, el archivo problemático es class-mi-plugin.php, dentro de la carpeta del plugin.
Apunta la ruta completa. La necesitarás para los siguientes pasos.
[TIP]: Si el error aparece en el panel de administración y no puedes entrar, activa el modo de depuración de WordPress. Edita el archivo wp-config.php y añade estas líneas justo antes de la línea que dice /* That's all, stop editing! */:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Esto creará un archivo debug.log en la carpeta wp-content con todos los errores detallados.
Paso 2: Accede a tu hosting (cPanel, Syspanel, etc.)
Para cambiar los permisos WordPress, necesitas acceder al panel de control de tu hosting. Dependiendo de tu proveedor, puede ser:
- cPanel (el más común).
- Syspanel (si tu hosting usa HestiaCP, recuerda que el puerto de acceso es el 2106).
- Plesk.
- Acceso por FTP (FileZilla, por ejemplo).
Si no sabes cómo acceder, mira el correo de bienvenida de tu hosting. Ahí suelen venir las instrucciones.
[INFO]: Si tu hosting usa Syspanel, la URL de acceso suele ser algo como https://tu-dominio.com:2106. Es importante que uses el puerto 2106 para conectarte.
Paso 3: Corrige los permisos de archivos y carpetas (chmod WordPress)
Este es el paso clave. Vamos a ajustar los permisos WordPress para que el servidor pueda leer y escribir correctamente.
¿Qué permisos son los correctos en WordPress?
La regla de oro es la siguiente:
- Carpetas: deben tener permisos
755. - Archivos: deben tener permisos
644. - Archivos especiales (como
wp-config.php): pueden tener600o640si quieres más seguridad.
Estos valores son los estándar y funcionan en el 99% de los casos.
Cómo cambiar los permisos con FileZilla (FTP)
- Abre FileZilla y conéctate a tu servidor con tus credenciales FTP.
- Navega hasta la carpeta
public_html(owww). - Selecciona todos los archivos y carpetas (Ctrl+A).
- Haz clic derecho y elige "Permisos de archivos...".
- En la ventana que aparece, escribe
644en el campo de permisos numéricos. - Marca la casilla "Recursivo en subdirectorios".
- Elige "Aplicar solo a archivos".
- Haz clic en Aceptar.
Repite el proceso, pero ahora:
- Selecciona solo las carpetas (puedes ordenar por tipo o tamaño).
- Haz clic derecho y ve a "Permisos de archivos...".
- Escribe
755. - Marca "Recursivo en subdirectorios".
- Elige "Aplicar solo a directorios".
- Acepta.
[WARNING]: No pongas permisos 777 en todo el sitio. Es un error de seguridad grave. Solo se usa en casos muy puntuales y nunca de forma permanente.
Paso 4: Si el error persiste, revisa el propietario de los archivos
A veces los permisos están bien, pero el propietario del archivo no es el correcto. Esto pasa mucho cuando migras un sitio de un hosting a otro o cuando restauramos una copia de seguridad.
El propietario debe ser el usuario del hosting (por ejemplo, usuario123) y el grupo debe ser el mismo (normalmente usuario123 o www-data).
Cómo cambiar el propietario desde cPanel
- Entra en Administrador de archivos de cPanel.
- Navega hasta la carpeta raíz de tu sitio (
public_html). - Selecciona todos los archivos y carpetas.
- Haz clic en "Permisos" (icono de llave o candado).
- Verás una opción para cambiar el propietario y el grupo.
- Selecciona tu usuario y grupo principal.
- Aplica los cambios.
Cómo cambiar el propietario desde Syspanel (HestiaCP)
- Accede a Syspanel usando el puerto 2106.
- Ve a la sección de Archivos o Administrador de archivos.
- Selecciona los archivos y carpetas.
- Busca la opción de "Cambiar propietario" o "Permisos".
- Ajusta el propietario al usuario de tu cuenta.
[TIP]: Si no encuentras la opción, contacta con el soporte de tu hosting. Ellos pueden cambiar el propietario por ti en segundos.
Paso 5: Revisa los permisos específicos de wp-config.php
El archivo wp-config.php es el corazón de WordPress. Si este archivo tiene permisos incorrectos, verás errores de "Permission denied" en todo el sitio.
- El permiso recomendado para
wp-config.phpes600o640. - Si está en
000o400, WordPress no podrá leerlo.
Desde FileZilla:
- Localiza
wp-config.phpen la raíz. - Haz clic derecho y elige "Permisos de archivos...".
- Escribe
600. - Acepta.
Paso 6: Si el error viene de un plugin o tema, actívalo y desactívalo
A veces el problema no es de permisos, sino que el plugin o tema está intentando crear o escribir en un archivo que no debería.
Para comprobarlo:
- Ve a Plugins → Plugins instalados.
- Desactiva todos los plugins.
- Comprueba si el error desaparece.
- Si desaparece, reactívalos de uno en uno hasta encontrar el culpable.
Si el error aparece en un tema:
- Ve a Apariencia → Temas.
- Activa un tema por defecto (como Twenty Twenty-Four).
- Comprueba si el error desaparece.
Paso 7: Usa WP-CLI (si tienes acceso SSH)
Si tu hosting te da acceso por SSH, puedes arreglar todos los permisos WordPress con un solo comando. Esto es mucho más rápido y preciso.
find /ruta/a/tu/sitio -type d -exec chmod 755 {} \;
find /ruta/a/tu/sitio -type f -exec chmod 644 {} \;
Y para el propietario:
chown -R usuario:usuario /ruta/a/tu/sitio
[WARNING]: Asegúrate de escribir la ruta correcta. Un error aquí puede dejar tu sitio inaccesible.
Paso 8: Revisa si el problema es de PHP-FPM
Si tu hosting usa PHP-FPM, el usuario de PHP puede ser diferente al usuario del hosting. Esto provoca que PHP no pueda escribir en archivos que son propiedad del usuario del hosting.
La solución es cambiar la configuración de PHP-FPM para que use el mismo usuario, o bien ajustar los permisos de las carpetas wp-content/uploads a 775 (solo para escritura).
Si no sabes qué es PHP-FPM, no te preocupes. Este paso es más avanzado y puedes saltártelo si los anteriores no dieron resultado.
Preguntas frecuentes (FAQ)
¿Por qué mi WordPress da error de permisos después de una migración?
Porque al migrar, los archivos pueden conservar los permisos y propietarios del servidor anterior. Es muy común. Sigue los pasos 3 y 4 de esta guía.
¿Es seguro usar permisos 777 en WordPress?
No. Los permisos 777 permiten que cualquiera (incluidos hackers) pueda escribir en tus archivos. Es un riesgo de seguridad grave. Usa 755 para carpetas y 644 para archivos.
¿Qué hago si no puedo acceder al panel de administración?
Puedes usar FileZilla (FTP) para cambiar los permisos. Si no tienes las credenciales FTP, contacta con tu proveedor de hosting.
El error dice "Permission denied" en la carpeta uploads, ¿qué hago?
La carpeta wp-content/uploads necesita permisos de escritura para subir imágenes. Asegúrate de que tenga permisos 755 y que el propietario sea el correcto.
¿Syspanel es lo mismo que HestiaCP?
Syspanel es la interfaz de gestión del hosting basada en HestiaCP. El acceso se realiza por el puerto 2106. Si tienes dudas, consulta la documentación de tu proveedor.
Resumen final
El error "Failed to open stream: Permission denied" en WordPress es molesto, pero casi siempre tiene una solución sencilla. Recuerda:
- Lee el error completo para saber qué archivo falla.
- Cambia los permisos a
755en carpetas y644en archivos. - Revisa el propietario de los archivos.
- Desactiva plugins y temas para descartar conflictos.
- No uses
777salvo en casos muy puntuales.
Con estos pasos, tu sitio debería volver a funcionar en cuestión de minutos. Si el problema persiste, no dudes en contactar con el soporte de tu hosting. Ellos tienen herramientas para revisar los permisos a nivel de servidor.
[TIP]: Para evitar futuros problemas, anota los permisos correctos en un lugar seguro. Y si trabajas con varios sitios, crea un pequeño checklist para cuando migres o restaures copias de seguridad.
Espero que esta guía te haya sido de ayuda. ¡Nos vemos en el próximo artículo!
