¿Cómo asignar los permisos correctos a mis ficheros y carpetas de PrestaShop?

Publicado : 30/10/2018 10:28:20
Categorías : Sugerencias PrestaShop

¿Cómo asignar los permisos correctos a mis ficheros y carpetas de PrestaShop?

El problema

"He cambiado de alojamiento y mi Back Office no me deja autenticarme", "no puedo subir imágenes a mis productos", "las imágenes de mis productos no se cargan correctamente en el Front Office", "no me funciona el módulo Actualización en 1-Clic" … Estos y muchos otros son los primeros indicios de que tenemos una asignación incorrecta de los permisos a los ficheros y carpetas de nuestra tienda en línea con PrestaShop. Este problema especialmente aparece cuando hemos hecho un cambio en el entorno donde teníamos ejecutando nuestra tienda, dígase una migración de servidor local a productivo o sencillamente un cambio de hosting.

La causa

Para que un servidor web pueda resolver las peticiones que se realizan desde los navegadores web de nuestros clientes necesita leer y ejecutar determinados ficheros o archivos, principalmente aquellos con la extensión .php. El encargado de ejecutar el contenido de estos ficheros es un proceso (comúnmente el servidor web apache) que corre en un sistema operativo (frecuentemente Linux para servidores de hosting estándares) bajo un usuario con determinados permisos. Cuando los permisos a nuestros ficheros o carpetas no permiten que dicho proceso los lea y ejecute correctamente aparecen errores en nuestro sitio que pueden ser del tipo HTTP 500 o similares.

La solución

El problema puede parecer complejo pero la solución es realmente sencilla. A excepción de unos pocos hosting nuestros ficheros necesitan permisos 0644 (lectura) y nuestras carpetas 0755 (lectura y ejecución). La asignación de estos permisos debe ser recursiva, o sea, que abarque todas las carpetas y subcarpetas del sitio.

Existen varias formas de acometer la asignación de permisos de forma recursiva. A continuación indicamos como hacerlo:

  • Asignación de permisos desde un cliente FTP: podemos asignar los permisos necesarios usando cualquier cliente de conexión FTP. La tarea es larga pues el cliente recorrerá cada fichero y carpeta de nuestro sitio asignando los permisos indicados. Si no tenemos prisa esta es la primera opción. Después de establecer la conexión localizamos la carpeta principal, hacemos clic derecho sobre ella, clic en "Permisos de archivos" y nos aparecerá una ventana de configuración donde debemos indicar los permisos y que se apliquen de forma recursiva:

    Asignacion recursiva de permisos a ficheros con cliente FTP Filezilla

    Asignacion recursiva de permisos a carpetas con cliente FTP Filezilla

  • Asignación de permisos a través de una conexión SSH: esta es la vía más rápida para la asignación de permisos ya que permite ejecutar un comando directamente en la consola del servidor el cual se ejecuta en pocos segundos. La mala noticia es que no todos los servidores tienen activa este tipo de conexión. Comúnmente solo está disponible en servidores VPS y dedicados.

    Asignacion recursiva de permisos a ficheros y carpetas desde consola SSH

    Una vez conectados a la consola del servidor y posicionados en la ruta principal de la tienda (comúnmente "public_html") debemos ejecutar los comandos:

    find . -type f -exec chmod 0644 {} +

    find . -type d -exec chmod 0755 {} +

  • Asignación de permisos a través de cPanel o similar: esta es la opción a la que la mayoría de nosotros tendremos acceso más fácilmente. Lo malo es que desde cPanel no podemos asignar los permisos de forma recursiva, por lo tanto tendremos que ir de uno en uno por cada fichero (o grupo de ficheros). De lo contrario tendremos que pedir asistencia al soporte técnico de nuestro hosting para ver si nos pueden ayudar.

    Asignacion de permisos a ficheros desde cPanel

    Para no complicarnos tanto la vida, hay un pequeño truco que normalmente debería funcionar y es asignar los permisos solamente a un reducido grupo prioritario de ficheros y carpetas. De esta forma se podrían solucionar problemas puntuales de funcionamiento de nuestro sitio. A pesar de que podría funcionar, esta no es la solución recomendada.Para realizar el cambio de permisos únicamente debemos seleccionar los archivos y hacer clic en la opción "Permissions".

    Para eliminar problemas con la subida de imágenes o la autenticación en el Back Office este sería el listado de carpetas y ficheros que primero se debería revisar:

    /admin_folder/
    /admin_folder/ajax.php
    /admin_folder/ajax_products_list.php
    /admin_folder/ajax-tab.php
    /admin_folder/backup.php
    /admin_folder/cron_currency_rates.php
    /admin_folder/displayImage.php
    /admin_folder/drawer.php
    /admin_folder/footer.inc.php
    /admin_folder/functions.php
    /admin_folder/get-file-admin.php
    /admin_folder/grider.php
    /admin_folder/header.inc.php
    /admin_folder/index.php
    /admin_folder/init.php
    /admin_folder/login.php
    /admin_folder/password.php
    /admin_folder/pdf.php
    /admin_folder/searchcron.php
    /admin_folder/filemanager/
    /admin_folder/filemanager/ajax_calls.php
    /admin_folder/filemanager/dialog.php
    /admin_folder/filemanager/execute.php
    /admin_folder/filemanager/force_download.php
    /admin_folder/filemanager/index.php
    /admin_folder/filemanager/upload.php
    /admin_folder/filemanager/uploader/
    /admin_folder/filemanager/uploader/success.php
    /admin_folder/autoupgrade/
    /admin_folder/autoupgrade/ajax-upgradetab.php

    Para eliminar problemas con la visualización del Front Office o las peticiones Ajax asociadas al carrito de compras:

    /footer.php
    /header.php
    /images.inc.php
    /index.php
    /init.php

    Para eliminar problemas con la visualización de imágenes en el Front Office:

    /img/*.jpg
    /img/*.png
    /img/*.gif

    Para eliminar problemas con la ejecución de llamadas Ajax de módulo en particular:

    /modules/module_folder/*.php

IMPORTANTE: Recuerde siempre, permisos 0644 para los ficheros y 0755 para las carpetas.

NOTA: hay algunas carpetas que necesitan adicionalmente permisos de escritura como por ejemplo la de imágenes de nuestro sitio.

Share