Cómo solucionar el error 'Failed to open stream: Permission denied' en WordPress
¿Tu sitio WordPress muestra el temido error "Failed to open stream: Permission denied"? No te preocupes, es uno de los problemas más comunes en el hosting y, por suerte, tiene solución. En esta guía completa y paso a paso, te explicaré exactamente qué significa este error, por qué ocurre y cómo arreglarlo tú mismo, incluso si nunca has tocado un archivo de configuración en tu vida.
Este error suele aparecer cuando intentas instalar un plugin, subir una imagen, actualizar el núcleo de WordPress o, a veces, simplemente al navegar por tu web. La causa raíz casi siempre es la misma: los permisos de archivos en tu servidor no son los correctos. Piénsalo como las llaves de tu casa: si le das la llave equivocada a la cerradura (o permiso insuficiente al servidor), no podrá abrir la puerta para leer o escribir el archivo.
Vamos a desglosarlo todo, desde los conceptos básicos hasta las soluciones avanzadas, para que puedas arreglar permisos WordPress de forma definitiva.
¿Qué significa exactamente "Permission denied" en WordPress?
Cuando tu servidor (Apache, Nginx o LiteSpeed) intenta leer, escribir o ejecutar un archivo dentro de tu instalación de WordPress, necesita tener los "permisos" adecuados. En el sistema Linux (que es el que usan la mayoría de los hostings), cada archivo y carpeta tiene un conjunto de permisos que dictan quién puede hacer qué.
Hay tres tipos de acciones:
- Lectura (r): Poder ver el contenido del archivo.
- Escritura (w): Poder modificar o eliminar el archivo.
- Ejecución (x): Poder ejecutar el archivo (como un script PHP).
Y hay tres tipos de usuarios que pueden tener estos permisos:
- Propietario (u): El usuario que creó el archivo (normalmente tu usuario de cPanel o Syspanel).
- Grupo (g): Un grupo de usuarios que comparten permisos.
- Público (o): Todos los demás usuarios del servidor.
El error error permission denied wordpress ocurre cuando el servidor web (que actúa como "público" o "grupo") no tiene el permiso de escritura necesario. Por ejemplo, si intentas actualizar un plugin, WordPress necesita escribir en la carpeta wp-content/plugins/. Si esa carpeta tiene permisos demasiado restrictivos (por ejemplo, 644 para carpetas, que solo permite lectura y ejecución al propietario), el servidor no podrá escribir y te mostrará el error.
Causas comunes del error "Failed to open stream"
Antes de lanzarnos a arreglar, es útil saber por qué ocurre. Las causas más frecuentes son:
- Cambio de servidor o migración: Al mover tu web de un hosting a otro, los permisos pueden copiarse mal.
- Instalación de plugin o tema defectuoso: A veces, un plugin mal codificado intenta escribir en archivos que no debería.
- Actualización fallida de WordPress: Una actualización interrumpida puede dejar archivos con permisos incorrectos.
- Configuración por defecto del hosting: Algunos hostings configuran permisos muy estrictos por seguridad, pero a veces se pasan de estrictos.
- Problemas con el archivo
wp-config.php: Este archivo necesita permisos de solo lectura, pero a veces se le dan permisos de escritura, causando conflictos.
Solución paso a paso: Cómo arreglar los permisos de archivos WordPress
Vamos a la acción. La solución principal es corregir los permisos de las carpetas y archivos de tu instalación. Te guiaré a través de dos métodos: uno visual (con cPanel o Syspanel) y otro más avanzado (con FTP).
Método 1: Usando el Administrador de Archivos de cPanel o Syspanel
Esta es la forma más fácil y segura para principiantes.
Paso 1: Accede a tu panel de control
- Si usas cPanel, accede a
tudominio.com/cpanele inicia sesión. - Si usas Syspanel (nuestro panel de control), accede a
tudominio.com:2106e inicia sesión con tus credenciales.
Paso 2: Abre el Administrador de Archivos
- En cPanel, busca la sección "Archivos" y haz clic en Administrador de Archivos.
- En Syspanel, busca el icono de Administrador de Archivos en el menú principal.
Paso 3: Navega a la raíz de tu WordPress
- Haz clic en la carpeta
public_html(ohtdocssi tu hosting lo usa). Esta es la raíz de tu sitio web. Si tu WordPress está en una subcarpeta (por ejemplo,public_html/blog), navega hasta esa carpeta.
Paso 4: Cambia los permisos de las carpetas
- Selecciona todas las carpetas de tu instalación de WordPress. La forma más fácil es hacer clic en la primera, mantener pulsada la tecla
Shifty hacer clic en la última. - Con las carpetas seleccionadas, haz clic en el botón Permisos o Cambiar permisos en la barra superior.
- En la ventana emergente, verás una serie de casillas de verificación. Debes asegurarte de que las carpetas tengan los permisos 755.
- Esto significa: Propietario (lectura, escritura y ejecución), Grupo (lectura y ejecución), Público (lectura y ejecución).
- Marca las casillas así: Propietario:
rwx(todas marcadas), Grupo:r-x(lectura y ejecución), Público:r-x(lectura y ejecución).
- Haz clic en Cambiar permisos o Guardar.
[INFO] El valor
755es el estándar para carpetas en la mayoría de los hostings. Con esto, el servidor puede leer y ejecutar los archivos dentro de la carpeta, pero solo el propietario puede crear o eliminar archivos dentro de ella.
Paso 5: Cambia los permisos de los archivos
- Ahora, repite el proceso, pero esta vez selecciona todos los archivos (no las carpetas). Puedes usar el atajo
Ctrl + A(oCmd + Aen Mac) para seleccionar todo, pero cuidado: también seleccionará las carpetas. Así que, después de seleccionar todo, desmarca las carpetas manualmente. - Haz clic en Permisos.
- Esta vez, el valor debe ser 644.
- Esto significa: Propietario (lectura y escritura), Grupo (solo lectura), Público (solo lectura).
- Marca las casillas así: Propietario:
rw-(lectura y escritura), Grupo:r--(solo lectura), Público:r--(solo lectura).
- Haz clic en Cambiar permisos.
Paso 6: Permisos especiales para wp-config.php
- Busca el archivo
wp-config.phpen la raíz de tu WordPress. - Selecciónalo y haz clic en Permisos.
- Este archivo debe tener permisos 600 o, como mucho, 640. Esto es por seguridad, ya que contiene tus contraseñas de base de datos.
- Marca solo las casillas de Propietario:
rw-(lectura y escritura). No marques nada para Grupo ni Público.
- Marca solo las casillas de Propietario:
- Guarda los cambios.
[WARNING] No uses permisos
777para nada. Eso significa que cualquier usuario del servidor puede escribir en tus archivos, lo que es un grave riesgo de seguridad. Si tu hosting te lo sugiere, busca otra solución.
Método 2: Usando un Cliente FTP (FileZilla, Cyberduck, etc.)
Si tu panel de control no tiene opción de cambiar permisos (poco probable) o prefieres usar FTP, esta es la alternativa.
Paso 1: Conecta por FTP
- Abre tu cliente FTP y conéctate a tu servidor con tus credenciales FTP (host, usuario, contraseña y puerto, normalmente 21).
Paso 2: Selecciona todo
- Navega hasta la raíz de tu WordPress (normalmente
public_html). - En el panel remoto (derecha), selecciona todas las carpetas y archivos. Puedes usar
Ctrl + A.
Paso 3: Cambia los permisos de las carpetas
- Haz clic derecho sobre la selección y elige "Permisos de archivos..." o "File permissions...".
- En la ventana emergente, verás un campo para el valor numérico.
- Escribe 755 y asegúrate de que la casilla "Aplicar a los subdirectorios" esté marcada. Luego, elige "Solo directorios" en el desplegable.
- Haz clic en Aceptar.
Paso 4: Cambia los permisos de los archivos
- Repite la selección de todo (
Ctrl + A). - Haz clic derecho y ve a "Permisos de archivos...".
- Escribe 644.
- En la casilla "Aplicar a los subdirectorios", elige "Solo archivos" en el desplegable.
- Haz clic en Aceptar.
Paso 5: Ajusta wp-config.php
- Busca
wp-config.php, haz clic derecho sobre él y elige "Permisos de archivos...". - Escribe 600 y haz clic en Aceptar.
[TIP] Si después de esto el error persiste, es posible que el problema no sean los permisos en sí, sino el propietario de los archivos. En algunos hostings, los archivos deben pertenecer a un usuario específico. Esto es más complejo de arreglar y, si no te sientes cómodo, contacta con tu proveedor de hosting.
Solución avanzada: Reparar el propietario de los archivos (Chown)
En ocasiones, el error "Failed to open stream" no se debe a los permisos numéricos, sino a que los archivos pertenecen a otro usuario del servidor. Esto pasa mucho después de una migración.
Si usas cPanel, es menos común, pero en Syspanel o en servidores VPS puede ser la causa.
-
Vía SSH (si tu hosting lo permite): Conecta por SSH a tu servidor y ejecuta el siguiente comando para cambiar el propietario de todos los archivos a tu usuario de hosting (normalmente el mismo que usas para FTP):
chown -R tu_usuario:tu_grupo /ruta/a/tu/wordpresstu_usuarioes tu nombre de usuario de FTP o cPanel.tu_gruposuele ser el mismo que el usuario, owww-dataen algunos servidores. Si no estás seguro, ejecuta el comandols -len la carpeta pública para ver el propietario actual de los archivos.
-
Vía Soporte del Hosting: Si no sabes usar SSH, contacta con el soporte de tu hosting. Diles que necesitas que ejecuten un
chownen tu cuenta para arreglar los permisos de WordPress. Es una operación rutinaria para ellos.
¿Qué pasa si el error ocurre al subir una imagen o un plugin?
A veces, el error es más específico, como al subir una imagen a la biblioteca de medios. En ese caso, el problema suele estar en la carpeta wp-content/uploads/ y sus subcarpetas.
- Asegúrate de que la carpeta
uploadstenga permisos 755. - Dentro de
uploads, hay carpetas por año y mes (por ejemplo,2024/04). Estas también deben tener 755. - Si el problema persiste, intenta cambiar los permisos de la carpeta
uploadsa 755 recursivamente (aplicando a todas las subcarpetas y archivos). Puedes hacerlo con el método FTP que vimos antes, seleccionando la carpetauploadsy aplicando los cambios a subdirectorios y archivos.
Previniendo futuros errores de permisos
Una vez que hayas solucionado el problema, es bueno tomar medidas para que no vuelva a ocurrir.
- No cambies los permisos por defecto: A menos que sepas exactamente lo que haces, mantén los permisos estándar (carpetas en
755, archivos en644). - Desactiva plugins de caché si tienes problemas: A veces, los plugins de caché crean archivos temporales con permisos incorrectos. Si tienes problemas, vacía la caché y luego verifica los permisos de la carpeta de caché.
- Mantén WordPress actualizado: Las actualizaciones suelen corregir errores de seguridad y de manejo de archivos.
- Usa un plugin de seguridad: Algunos plugins de seguridad pueden monitorear los permisos de tus archivos y alertarte si detectan cambios sospechosos.
Preguntas frecuentes (FAQ)
¿Por qué no puedo cambiar los permisos de un archivo desde cPanel?
Si no puedes cambiar los permisos, es posible que el archivo pertenezca a otro usuario (por ejemplo, root). Deberás contactar con el soporte de tu hosting para que lo cambien por ti.
¿Es seguro usar permisos 777 para solucionar el error?
No, absolutamente no. Los permisos 777 permiten que cualquier usuario del servidor lea, escriba y ejecute tus archivos. Esto deja tu sitio vulnerable a ataques de malware y hackeos. Es una solución temporal peligrosa que nunca deberías usar.
¿Qué significa el error "Failed to open stream: Permission denied" en el archivo wp-content/cache/?
Eso indica que la carpeta de caché no tiene permisos de escritura. Asegúrate de que la carpeta wp-content/cache/ (o el nombre que use tu plugin de caché) tenga permisos 755. A veces, desactivar y reactivar el plugin de caché también lo soluciona.
¿Puedo arreglar los permisos desde el plugin "All in One WP Security"?
Sí, este plugin tiene una sección para verificar y corregir permisos de archivos. Es una opción útil si prefieres hacerlo desde el panel de administración de WordPress.
Después de cambiar los permisos, mi sitio web se ve raro o da error 500. ¿Qué hago?
Esto puede ocurrir si cambiaste los permisos de forma incorrecta (por ejemplo, poniendo 644 en una carpeta que necesita 755). Vuelve a verificar los permisos y asegúrate de que las carpetas tengan 755 y los archivos 644. Si el error persiste, restaura una copia de seguridad reciente.
¿Qué pasa si el error ocurre solo en un archivo específico?
Si el error menciona un archivo concreto, como wp-content/plugins/mi-plugin/funciones.php, el problema está en ese archivo. Cámbiale los permisos a 644 o 640. Si el archivo es de un plugin, intenta desactivarlo desde la base de datos (o renombra la carpeta del plugin por FTP) para ver si el error desaparece.
Conclusión final
El error error permission denied wordpress es frustrante, pero no es un problema sin solución. Siguiendo esta guía, habrás aprendido a arreglar permisos WordPress usando cPanel, Syspanel o FTP. Recuerda siempre la regla de oro: carpetas en 755 y archivos en 644, y nunca uses 777.
Si has seguido todos los pasos y el error persiste, es muy probable que el problema sea más profundo, como un conflicto de servidor o un problema en la configuración de PHP. En ese caso, no dudes en contactar con el soporte técnico de tu hosting. Ellos tienen las herramientas y el conocimiento para diagnosticar el problema a nivel de servidor. ¡No te rindas, que tu web estará funcionando en poco tiempo!
