WordPress necesita que el proceso PHP o de actualización escriba en directorios concretos del núcleo, plugins, temas y temporales. «Permission denied» indica un conflicto de propietario o modo, no que toda la web deba ser escribible por cualquiera.
Conserva la ruta exacta y el usuario del proceso antes de cambiar permisos de forma recursiva.
Registra la operación fallida
Anota componente, versión del paquete, hora y ruta completa protegida. Consulta los registros PHP y del servidor.
Identifica:
archivo o directorio
propietario y grupo
modo numérico o simbólico
controlador y usuario PHP
método del sistema de archivos
estado de disco e inodos
Oculta nombres de cuenta en informes compartidos.
Confirma el usuario PHP activo
cPanel o Plesk pueden ejecutar PHP como usuario de cuenta, usuario de pool o usuario web compartido. Las órdenes CLI pueden usar otro y crear archivos que WordPress no pueda sustituir.
Usa herramientas del hosting o pruebas del proceso. No deduzcas el usuario solo por archivos cercanos.
Alinea despliegues, cron y WP-CLI con el usuario previsto.
Revisa directorios superiores
Escribir un archivo exige permisos adecuados en cada directorio padre. Comprueba la ruta y sus antecesores, incluido wp-content/upgrade, directorio del componente y temporal.
El destino puede parecer escribible y fallar porque un padre no tiene permiso de ejecución o recorrido.
No cambies subidas o configuración si el error nombra únicamente un directorio de paquete.
Usa la reparación de propiedad del hosting
En hosting compartido, cPanel, Plesk o proveedor deben reparar propietarios creados por restauraciones o migraciones. En VPS, debe hacerlo alguien que entienda el controlador PHP y el despliegue.
Directorios 755 y archivos 644 son habituales, no universales. La propiedad suele importar más.
No apliques 777 recursivo; permite escrituras no autorizadas y no soluciona SELinux ni ACL.
Comprueba ACL y políticas de seguridad
Las listas ACL, atributos inmutables, SELinux o AppArmor y montajes de solo lectura pueden denegar aunque los bits normales parezcan correctos.
Usa registros de auditoría y herramientas autorizadas. No desactives toda la política para permitir actualizaciones.
Crea únicamente la etiqueta o regla requerida y prueba una operación.
Retira temporales antiguos con seguridad
Una actualización interrumpida puede dejar wp-content/upgrade o el destino con otro propietario. Haz copia y confirma que no exista ningún proceso.
Elimina solo el paquete temporal concreto con la misma cuenta fiable. No borres el plugin activo sin conservar archivos y reversión.
Comprueba disco e inodos antes de repetir.
Revisa las credenciales de archivos
Cuando WordPress no puede escribir directamente, puede pedir FTP o FTPS. Confirma que el proveedor admite ese método y que la cuenta se limita a la raíz correcta.
No guardes contraseñas FTP en wp-config.php salvo que el diseño y política lo exijan. Prefiere SFTP o despliegue seguro; FTP transmite credenciales. Una solicitud repetida puede indicar propiedad incorrecta, no contraseña errónea.
Decide si WordPress debe escribir código
Algunos despliegues gestionados o versionados hacen el código de producción inmutable. Las actualizaciones deben ocurrir en staging o en la canalización, no desde el escritorio.
No debilites una infraestructura inmutable. Actualiza el repositorio y despliega por la vía autorizada.
Mantén subidas y cachés escribibles por separado según necesidad.
Verifica la herencia de directorios
Los archivos nuevos pueden heredar grupo, ACL o umask distintos. Crea y elimina un archivo inofensivo con el mismo usuario y revisa propietario y modo.
Corrige valores predeterminados para que el próximo update siga funcionando; un chmod puntual volverá a fallar. Coordina con el proveedor si el panel restablece propietarios.
Verifica seguridad y actualización
Reintenta una actualización fiable y confirma sustitución completa, ausencia de versiones mezcladas y limpieza de OPcache. Prueba web y administración.
Revisa después permisos demasiado amplios, especialmente en wp-config.php y código. El mantenimiento recurrente debe comprobar propietarios tras migraciones y documentar una única vía aprobada para actualizar sin convertir una reparación en una regresión de seguridad.