Solucionar el error 'Fatal error: Call to undefined method' en PrestaShop (Plesk)
¿Qué significa "Fatal error: Call to undefined method" en PrestaShop?
Si estás leyendo esto, es muy probable que te hayas encontrado con una pantalla en blanco o un mensaje de error bastante críptico en tu tienda online. No te preocupes, es más común de lo que parece y, sobre todo, tiene solución. Este error, conocido técnicamente como "Call to undefined method", es uno de los errores PrestaShop Plesk más frecuentes cuando se actualiza la tienda, se instala un módulo o se cambia de servidor.
En términos sencillos, este error PrestaShop Plesk significa que el código de tu tienda está intentando ejecutar una función (un "método") que no existe en la versión actual del archivo que lo llama. Imagina que intentas usar el botón de "arranque" de un coche que no tiene motor; el sistema no sabe qué hacer y se detiene. Lo mismo le ocurre a PrestaShop: encuentra una instrucción que no reconoce y, como no puede continuar, muestra el error fatal.
Las causas más habituales suelen ser:
- Actualizaciones incompletas: Se actualizó el núcleo de PrestaShop, pero no todos los módulos o plantillas (temas) se actualizaron al mismo ritmo.
- Módulos incompatibles: Un módulo antiguo intenta usar funciones de una versión más nueva de PrestaShop o viceversa.
- Archivos corruptos: Algún archivo de la clase se subió mal por FTP o se dañó durante una copia de seguridad.
- Problemas de caché: El sistema guarda una versión antigua del código y no "ve" los archivos nuevos.
A continuación, te guiaré paso a paso, como si estuvieras en una clase particular, para que puedas solucionar error PrestaShop de una manera segura y efectiva, incluso si tu tienda está alojada en un panel de control como Plesk.
Primeros pasos antes de tocar nada: La seguridad ante todo
Antes de lanzarnos a modificar archivos, es CRÍTICO que hagas una copia de seguridad completa. Si algo sale mal, podrás restaurar tu tienda en minutos.
[WARNING] No omitas este paso. Modificar archivos sin una copia de seguridad es como operar a corazón abierto sin tener un plan B. Si no sabes cómo hacerla, contacta con tu proveedor de hosting y pídeles que te ayuden a generar una copia de seguridad completa (archivos + base de datos).
Cómo activar el modo de depuración (Debug) en PrestaShop
Para ver el error completo (y no solo un mensaje genérico), necesitamos activar el modo de depuración de PrestaShop. Esto nos dirá exactamente qué archivo y qué línea están causando el problema.
Para ello, accede a tu panel de Plesk y sigue estos pasos:
- Ve a Administrador de archivos en Plesk.
- Busca la carpeta raíz de tu tienda (normalmente se llama
httpdocsopublic_html). - Localiza el archivo llamado
defines.inc.phpdentro de la carpetaconfig. - Ábrelo con el editor de texto de Plesk (clic derecho > Editar).
- Busca la línea que dice:
define('_PS_MODE_DEV_', false); - Cámbiala por:
define('_PS_MODE_DEV_', true); - Guarda los cambios.
[TIP] Ahora, al recargar tu tienda, verás el error completo con una ruta de archivo y un número de línea (ej: Error en el archivo /public_html/classes/module/Module.php en la línea 345). Anota esta información, ya que te ayudará a identificar el módulo o tema problemático.
Solución 1: El "Clásico" - Regenerar la caché de clases y archivos
PrestaShop genera un archivo de caché que guarda la lista de todas las clases y sus métodos. A veces, este archivo se queda "obsoleto" y no reconoce los nuevos métodos. Forzar su regeneración es la solución más rápida y sencilla.
Método A: Borrar la caché manualmente (Recomendado)
- Accede a tu Administrador de archivos en Plesk.
- Navega a la carpeta
var/cache(en versiones antiguas eracache). - Dentro, encontrarás una o dos carpetas llamadas
devyprod. - Entra en la carpeta
prod(odev, según la que exista). - Borra TODO el contenido de esta carpeta, pero no la carpeta en sí. Selecciona todos los archivos y carpetas dentro y elimínalos.
- Vuelve a cargar tu tienda.
Método B: Usar el archivo de mantenimiento
Si no puedes acceder al panel de administración porque el error es muy grave, puedes crear un archivo temporal:
- En la raíz de tu tienda, crea un archivo llamado
parameters.php(si no existe) o edita el existente. - No es necesario cambiar nada, solo con crear o modificar la fecha del archivo
config/parameters.php, PrestaShop detecta un cambio y fuerza la regeneración de la caché.
[INFO] Este truco es muy útil en casos de emergencia. A veces, simplemente con borrar la carpeta var/cache se resuelve el 80% de los errores PrestaShop Plesk de este tipo.
Solución 2: Identificar y desactivar el módulo o tema conflictivo
Si el error persiste, el problema es más específico. El mensaje de error que obtuviste en el modo depuración te dará pistas. Normalmente, la ruta del archivo incluye el nombre del módulo o del tema.
¿Cómo desactivar un módulo si no puedo acceder al panel de administración?
Esta es una situación complicada, pero tiene truco. Vamos a hacerlo directamente desde la base de datos usando la herramienta phpMyAdmin de Plesk.
-
Ve a phpMyAdmin en tu panel de Plesk.
-
Selecciona la base de datos de tu tienda (la que uses para PrestaShop).
-
Abre la pestaña SQL.
-
Ejecuta esta consulta para desactivar todos los módulos de golpe:
UPDATE ps_modules SET active = 0 WHERE active = 1;(Si tu prefijo de tabla no es
ps_, cámbialo por el tuyo, ej:prestashop_modules) -
Ahora, recarga tu tienda. Si el error desaparece, el problema era un módulo.
-
Para encontrar cuál era, ve activando los módulos de uno en uno desde el panel de administración (si ya puedes entrar) o ejecutando otra consulta SQL para activarlos uno a uno.
[WARNING] Esta consulta SQL desactiva TODOS los módulos. Tu tienda se verá "pelada" (sin funcionalidades extra), pero el objetivo es que vuelva a funcionar. Luego, reactivarás los módulos uno por uno para encontrar al culpable.
Si el problema es el tema (plantilla)
Si el error menciona la carpeta themes, el problema es la plantilla. La solución es cambiar temporalmente al tema por defecto de PrestaShop.
- En tu Administrador de archivos, navega a la carpeta
config. - Busca el archivo
themes.inc.php(osettings.inc.phpen versiones antiguas). - Ábrelo y busca una línea similar a:
define('_THEME_NAME_', 'tu_tema_actual'); - Cámbiala por:
define('_THEME_NAME_', 'classic');(odefault-bootstrapsi es una versión muy antigua). - Guarda y recarga.
Solución 3: Re-subir los archivos del núcleo (Core) de PrestaShop
A veces, el error se debe a que un archivo del núcleo de PrestaShop está incompleto o dañado. La solución es volver a subir los archivos originales de la misma versión que tienes instalada.
- Descarga el paquete original de PrestaShop de la misma versión exacta que tienes en tu tienda (puedes verla en el panel de administración o en el archivo
config/settings.inc.php). - Descomprime el archivo en tu ordenador.
- Con un cliente FTP (como FileZilla) o el Administrador de archivos de Plesk, sube el contenido de la carpeta
uploado la carpeta raíz del paquete (depende de la versión) a la raíz de tu tienda. - Sobrescribe todos los archivos cuando te lo pregunte, pero NO borres las carpetas
config,img,themes(aunque puedes sobrescribir archivos dentro de ellas),modulesooverride.
[TIP] Este método es como "reinstalar" Windows encima de tu instalación actual. No borra tus datos, pero restaura los archivos del sistema a su estado original.
Solución 4: Revisar la carpeta "override" (Sobrescrituras)
PrestaShop permite a los desarrolladores sobrescribir clases nativas creando archivos en la carpeta override/classes. Si uno de estos archivos está mal codificado, puede provocar este error.
- Navega a tu carpeta
override/classes. - Busca archivos que coincidan con el nombre de la clase que aparece en el error (ej:
Module.php). - Si encuentras un archivo ahí, cámbiale el nombre (ej:
Module.php.bak) para desactivarlo temporalmente. - Recarga tu tienda.
Si el error desaparece, has encontrado al culpable. Contacta con el desarrollador que te proporcionó ese override para que lo actualice.
Solución 5: Ajustar la versión de PHP (Muy común en Plesk)
Los errores PrestaShop Plesk a menudo aparecen después de que el servidor actualiza la versión de PHP. Un módulo o un tema puede no ser compatible con la nueva versión.
- En tu panel de Plesk, busca la sección "Configuración de PHP" o "PHP Settings".
- Verás una lista de versiones disponibles (ej: 7.4, 8.0, 8.1, 8.2).
- Si estás en una versión muy nueva (como 8.1 o 8.2), intenta cambiar a una versión anterior (como 7.4).
- Guarda los cambios y recarga tu tienda.
[WARNING] Cambiar la versión de PHP puede afectar a otros aspectos de tu web. Asegúrate de que tu versión de PrestaShop es compatible con la versión de PHP que eliges. PrestaShop 1.7.8 o superior funciona bien con PHP 7.4, pero las versiones 8.x requieren PrestaShop 8.x o superior.
Solución 6: Aumentar el límite de memoria (Memory Limit)
A veces, este error no es que el método no exista, sino que PHP se queda sin memoria para cargar todas las clases. El mensaje puede ser engañoso.
- Accede a tu Administrador de archivos.
- Busca el archivo
.htaccessen la raíz de tu tienda. - Ábrelo y añade esta línea al final:
php_value memory_limit 512M - Guarda y recarga.
[TIP] Si no encuentras el archivo .htaccess, asegúrate de que tu administrador de archivos tiene habilitada la opción de "Mostrar archivos ocultos".
Resumen rápido y prevención futura
Aquí tienes una tabla resumen para que vayas directo al grano:
| Problema | Solución Rápida |
|---|---|
| Error genérico | Borrar el contenido de var/cache. |
| Error tras actualizar | Desactivar módulos (SQL) o re-subir archivos del core. |
| Error con un módulo | Desactivar módulos uno a uno o cambiar la plantilla. |
| Error tras cambio de PHP | Cambiar la versión de PHP en Plesk. |
| Error con "override" | Renombrar archivos en override/classes. |
Para evitar futuros dolores de cabeza, te recomiendo:
- Mantén todo actualizado: PrestaShop, los módulos y el tema. Pero hazlo de una en una pieza, no todo a la vez.
- Haz copias de seguridad frecuentes: Antes de cualquier cambio, siempre.
- Lee los requisitos: Antes de instalar un módulo, verifica que sea compatible con tu versión de PrestaShop y PHP.
[INFO] Si después de todos estos pasos el PrestaShop fatal error Plesk persiste, el problema puede ser más profundo, como un conflicto en la base de datos. En ese caso, te recomiendo contactar con un desarrollador especializado en PrestaShop o con el soporte técnico de tu hosting, proporcionándoles el mensaje de error completo que obtuviste en el modo depuración. Con esa información, podrán ayudarte de forma mucho más rápida y precisa.
Espero que esta guía te haya sido de gran ayuda. Recuerda ir paso a paso y con calma; la mayoría de estos errores tienen una solución sencilla que está a tu alcance. ¡Tu tienda volverá a estar en línea en poco tiempo!
