Resolver error de permisos de archivos en PrestaShop (DirectAdmin)
¿Por qué aparecen errores de permisos en PrestaShop y cómo detectarlos?
Cuando trabajas con PrestaShop, es muy común encontrarse con errores de permisos de archivos, especialmente si acabas de migrar tu tienda, restaurar una copia de seguridad o cambiar de servidor. Estos errores pueden manifestarse de varias formas: un error 500, pantallas en blanco, imposibilidad de subir imágenes o módulos, o incluso la temida "escritura no permitida" al intentar guardar configuraciones.
El error de permisos ocurre porque el sistema operativo de tu servidor (Linux, en la mayoría de casos) controla quién puede leer, escribir o ejecutar cada archivo y carpeta. PrestaShop necesita escribir en ciertos directorios para funcionar correctamente (por ejemplo, para generar caché, subir productos o instalar temas). Si los permisos no son los correctos, el script no puede realizar su trabajo y el servidor responde con un error.
En este artículo, vamos a centrarnos en resolver estos problemas cuando tu hosting utiliza DirectAdmin como panel de control. Te guiaremos paso a paso, incluso si nunca has tocado un archivo de configuración en tu vida. Al final, también veremos cómo evitar que esto vuelva a ocurrir.
¿Cómo saber si tienes un problema de permisos?
Antes de lanzarnos a cambiar nada, es importante identificar si el problema es realmente de permisos. Estos son algunos síntomas típicos:
- Error 500 en toda la tienda o en páginas concretas.
- Mensajes como "No se puede escribir en el archivo de caché" o "No se pudo crear el directorio".
- Al intentar instalar un módulo o tema, aparece un error de escritura.
- Las imágenes de productos no se cargan o no se pueden subir.
- La carpeta
/var/cacheo/cacheda errores al intentar limpiarla desde el panel.
Si tienes acceso a los logs de error de DirectAdmin (normalmente en la ruta /home/usuario/logs/ o dentro del panel de estadísticas), busca líneas que mencionen Permission denied o failed to open stream. Eso confirmará que el problema es de permisos.
Entendiendo los permisos en PrestaShop: el famoso chmod
Los permisos en Linux se representan con números. Cada archivo o carpeta tiene tres grupos de permisos: propietario, grupo y otros (resto del mundo). Cada grupo puede tener permisos de lectura (4), escritura (2) y ejecución (1). La suma de estos números da el valor final.
Por ejemplo, un valor 755 significa que el propietario tiene lectura, escritura y ejecución (4+2+1=7), el grupo tiene lectura y ejecución (4+1=5), y los demás también (4+1=5). Para PrestaShop, los valores más comunes son:
- Carpetas:
755(aunque a veces se usa775). - Archivos:
644(a veces664).
Un error típico es que, al subir archivos por FTP con un cliente como FileZilla, los permisos se configuran de forma incorrecta (por ejemplo, todo en 777, que es inseguro y también puede causar errores). Además, el propietario de los archivos es crucial. En un hosting compartido con DirectAdmin, el propietario debe ser tu usuario de FTP (normalmente el mismo que el nombre de usuario del panel).
¿Qué permisos exactos necesita PrestaShop?
PrestaShop necesita poder escribir en las siguientes carpetas (y sus subcarpetas):
/cache/log/img/mails/modules/themes/translations/upload/download/var(en versiones recientes)
También necesita escribir en el archivo /config/settings.inc.php (aunque después de la instalación se suele proteger). La regla general es que estas carpetas deben tener permisos de escritura para el propietario. Si tu hosting usa PHP como módulo de Apache (mod_php), el propietario del proceso PHP es el mismo que el de los archivos, así que con 755 en carpetas y 644 en archivos suele bastar.
Sin embargo, si usas PHP-FPM (muy común en DirectAdmin), el proceso PHP puede ejecutarse con otro usuario. En ese caso, necesitarás permisos 775 en carpetas y 664 en archivos, o cambiar el grupo. Esto se complica un poco, pero no te preocupes: veremos cómo solucionarlo fácilmente.
Método 1: Arreglar permisos con el Administrador de archivos de DirectAdmin
Esta es la forma más visual y segura para principiantes. DirectAdmin incluye un administrador de archivos basado en web que te permite cambiar permisos sin necesidad de programas externos.
Paso 1: Accede al Administrador de archivos
- Entra en tu panel de DirectAdmin (normalmente en
https://tudominio.com:2222). - Busca el icono "Administrador de archivos" o "File Manager".
- Navega hasta la carpeta donde tienes instalado PrestaShop. Normalmente es
domains/tudominio.com/public_htmlo simplementepublic_html.
Paso 2: Selecciona todos los archivos y carpetas
Una vez dentro de la raíz de PrestaShop, haz clic en "Seleccionar todo" (o pulsa Ctrl+A). Verás que todos los archivos y carpetas quedan resaltados.
Paso 3: Cambia los permisos de carpetas
Con todo seleccionado, busca el botón que dice "Cambiar permisos" o "Chmod". Se abrirá una ventana con casillas para marcar. Para las carpetas, te recomendamos lo siguiente:
- Marca lectura, escritura y ejecución para el propietario.
- Marca lectura y ejecución para el grupo y para otros (esto da
755).
Si tu hosting usa PHP-FPM, mejor marca lectura, escritura y ejecución para el propietario, y lectura, escritura y ejecución también para el grupo (esto da 775). No marques "otros" para escritura, ya que es un riesgo de seguridad.
Aplica los cambios. El administrador de archivos a veces aplica los permisos solo a los archivos, así que debes repetir el proceso.
Paso 4: Cambia los permisos de los archivos
Ahora repite el proceso, pero esta vez selecciona solo archivos (no carpetas). Puedes hacerlo ordenando por tipo o simplemente seleccionando uno a uno. Los archivos deben tener 644 (propietario: lectura y escritura; grupo y otros: solo lectura). Si usas PHP-FPM, usa 664 (añade escritura para el grupo).
[TIP] En DirectAdmin, si haces clic derecho sobre un archivo o carpeta, también aparece la opción "Cambiar permisos". Puedes hacerlo individualmente si solo tienes un problema concreto.
Método 2: Usar comandos SSH (para usuarios más avanzados)
Si tienes acceso SSH a tu servidor, el proceso es mucho más rápido. Conecta con tu usuario y ejecuta los siguientes comandos desde la raíz de tu PrestaShop (normalmente public_html).
Paso 1: Establecer propietario correcto
Asegúrate de que el propietario de todos los archivos es tu usuario. Si no lo es, ejecuta:
chown -R usuario:grupo /ruta/a/public_html
Sustituye usuario y grupo por tu nombre de usuario de DirectAdmin (suele ser el mismo).
Paso 2: Permisos estándar para carpetas
find /ruta/a/public_html -type d -exec chmod 755 {} \;
Si usas PHP-FPM y necesitas 775, cambia 755 por 775.
Paso 3: Permisos estándar para archivos
find /ruta/a/public_html -type f -exec chmod 644 {} \;
Para PHP-FPM, usa 664.
Paso 4: Permisos especiales para carpetas de escritura
PrestaShop necesita escritura en ciertas carpetas. Si el propietario ya es el correcto, con 755 es suficiente. Pero si tienes dudas, dale 775 a estas carpetas:
chmod -R 775 cache log img mails modules themes translations upload download var
[WARNING] No uses chmod -R 777 en todo el directorio. Es un agujero de seguridad enorme y algunos servidores lo bloquean directamente. PrestaShop no necesita permisos tan abiertos.
Método 3: Solución rápida con un script PHP (alternativa sin SSH)
Si no tienes acceso SSH y el administrador de archivos te resulta tedioso, puedes crear un pequeño script PHP para arreglar permisos. Es una solución temporal, pero muy efectiva.
- Crea un archivo llamado
fix_perms.phpen la raíz de tu PrestaShop. - Pega este código:
<?php
// Script para arreglar permisos de PrestaShop
$base = __DIR__;
$dirs = ['cache', 'log', 'img', 'mails', 'modules', 'themes', 'translations', 'upload', 'download', 'var'];
foreach ($dirs as $dir) {
$path = $base . '/' . $dir;
if (is_dir($path)) {
exec('chmod -R 775 ' . $path);
echo "Permisos 775 en $dir<br>";
}
}
echo "Proceso completado. Borra este archivo inmediatamente.";
?>
- Ejecuta este script en tu navegador:
https://tudominio.com/fix_perms.php. - Cuando termine, borra el archivo inmediatamente para evitar riesgos de seguridad.
[INFO] Este script solo arregla las carpetas críticas. Si el problema es general, usa el método 1 o 2.
Cómo prevenir futuros errores de permisos en PrestaShop
Una vez que hayas resuelto el error, es importante establecer buenas prácticas para que no vuelva a ocurrir.
1. Configura correctamente tu cliente FTP
Si usas FileZilla, asegúrate de que al subir archivos no se cambien los permisos automáticamente. En FileZilla, ve a Editar > Ajustes > Transferencias y desmarca la opción "Preservar marcas de tiempo" y configura los permisos por defecto como 755 para carpetas y 644 para archivos.
2. Mantén PrestaShop actualizado
Las versiones antiguas de PrestaShop a menudo tienen errores de permisos que ya están corregidos en las actualizaciones. Mantén tu tienda al día.
3. Evita usar 777
Aunque a veces parece la solución rápida, los permisos 777 en archivos o carpetas son peligrosos. Cualquier usuario del servidor podría modificarlos, lo que supone un riesgo de seguridad grave. Si tu hosting te lo permite, usa siempre 755 y 644.
4. Si usas PHP-FPM, configura el grupo correctamente
En DirectAdmin, cuando configuras PHP-FPM, puedes elegir el usuario y grupo bajo el que se ejecuta. Asegúrate de que el grupo coincida con el grupo de tus archivos. Si no sabes cómo hacerlo, contacta con tu proveedor de hosting.
5. Haz copias de seguridad periódicas
Si algo falla, tener una copia de seguridad reciente te permitirá restaurar el sistema en minutos. DirectAdmin ofrece herramientas de backup automáticas.
Preguntas frecuentes (FAQ) sobre permisos en PrestaShop
¿Por qué sigo viendo error 500 después de arreglar los permisos?
El error 500 puede tener otras causas además de los permisos: un archivo .htaccess corrupto, un módulo incompatible o un error de PHP. Después de arreglar permisos, limpia la caché de PrestaShop (borra el contenido de /var/cache o /cache) y prueba de nuevo. Si persiste, revisa los logs de error en DirectAdmin.
¿Qué hago si no tengo acceso al administrador de archivos?
Si tu plan de hosting no incluye el administrador de archivos, contacta con tu proveedor. También puedes intentar acceder por FTP con un cliente como FileZilla y cambiar permisos desde ahí (clic derecho > "Permisos de archivo").
¿Los permisos deben ser diferentes en un servidor dedicado?
En un servidor dedicado o VPS, sueles usar 755 y 644 si el PHP se ejecuta como tu usuario. Si usas un panel como Syspanel (antes HestiaCP), recuerda que el acceso es a través del puerto 2106. En ese caso, el proceso es similar: busca el administrador de archivos en el panel.
¿Puedo usar los permisos de PrestaShop 1.7 en la versión 8?
Sí, la estructura de permisos es prácticamente la misma. La única diferencia notable es que en versiones recientes la carpeta /var tiene más peso y debe tener permisos de escritura sí o sí.
¿Qué significa "escritura no permitida" al guardar un producto?
Ese mensaje indica que la carpeta /img o /upload no tiene permisos de escritura para el usuario de PHP. Aplica chmod 775 a esas carpetas y prueba de nuevo.
Conclusión
Resolver los errores de permisos en PrestaShop con DirectAdmin no es complicado si sigues los pasos adecuados. La clave está en entender que el propietario y los permisos deben ser coherentes con el usuario que ejecuta PHP. Empieza siempre por el método visual (administrador de archivos) y, si te sientes cómodo, usa SSH para ser más eficiente.
Recuerda los valores clave: carpetas 755 (o 775 con PHP-FPM) y archivos 644 (o 664). Evita a toda costa el 777 y mantén tu instalación actualizada. Si después de todo el error persiste, revisa los logs y no dudes en contactar con tu proveedor de hosting: muchos errores 500 se deben a configuraciones del servidor que no puedes controlar desde el panel.
Con estos consejos, tu tienda debería funcionar sin problemas y podrás volver a centrarte en lo importante: vender online.
[WARNING] Siempre borra cualquier script temporal como fix_perms.php después de usarlo. Dejarlo en el servidor es un riesgo de seguridad crítico.
[TIP] Si tienes dudas sobre si tu hosting usa mod_php o PHP-FPM, revisa la información de tu cuenta en DirectAdmin. En la sección "Configuración de PHP" o "Administrador de PHP" podrás verlo. En caso de duda, usa 775 y 664, ya que funcionan en ambos escenarios.
