El error de incompatibilidad entre la versión de PHP y IonCube Loader ocurre cuando la extensión cargada en el servidor no coincide con la versión exacta de PHP que ejecuta PrestaShop, o cuando el módulo comercial fue codificado para una versión obsoleta de PHP. Para resolverlo, debes actualizar la extensión ioncube_loader en el servidor o ajustar la versión de PHP a una compatible con el módulo afectado.
Qué significa el error
Este fallo aparece al intentar acceder a la tienda, al panel de administración o al ejecutar un módulo comercial de pago cifrado. El mensaje de error más común muestra un texto similar a este:
The file /var/www/html/modules/modulodepago/modulodepago.php was encoded with the php 7.4 ionCube encoder and requires PHP 7.4 to be installed.También puede manifestarse mediante un error 500 en PrestaShop al actualizar la versión de PHP. Afecta directamente a tiendas que utilizan módulos protegidos por licencias de software y que han cambiado la versión de PHP en su alojamiento sin actualizar la extensión correspondiente.
Causas más habituales
- Actualización reciente de PHP: Has cambiado la versión de PHP en tu cPanel o Plesk, pero IonCube Loader sigue apuntando a la versión anterior.
- Falta de la extensión en PHP: La nueva versión de PHP en el servidor no tiene activado el módulo IonCube.
- Cifrado antiguo del módulo: El desarrollador del módulo protegió los archivos usando un codificador de IonCube antiguo incompatible con PHP 8.x.
- Ficheros php.ini desconfigurados: Existe una directiva
zend_extensioncon una ruta errónea en la configuración global o local.
Antes de empezar
Realiza una copia de seguridad completa de tu base de datos y de la estructura de archivos de PrestaShop. Asegúrate de tener acceso mediante FTP/SFTP, acceso al panel de control de tu alojamiento (cPanel, Plesk o DirectAdmin) o acceso SSH con privilegios de superusuario (root) si gestionas un servidor VPS o dedicado.
Solución 1: Activar o cambiar la versión de IonCube en cPanel o Plesk
La forma más rápida en alojamientos compartidos o administrados es seleccionar la extensión correcta desde la interfaz web del hosting.
- Accede a tu panel de control cPanel.
- Busca la sección Software y haz clic en Seleccionar versión de PHP (PHP Selector).
- Asegúrate de que la versión de PHP seleccionada coincida con las necesidades de tu versión de PrestaShop.
- En la pestaña Extensiones o Extensions, busca la casilla ioncube_loader.
- Marca la casilla para activarla. Si ya estaba marcada, desmárcala, guarda los cambios y vuelve a marcarla para forzar el recargado del servicio.
- Guarda los cambios y limpia la caché de PrestaShop.
Esta opción funciona porque reescribe automáticamente los enlaces simbólicos de las extensiones dinámicas de PHP asociadas a tu usuario.
Solución 2: Configurar manualmente el archivo php.ini
Si usas un servidor dedicado, VPS o tu panel no permite la selección gráfica de extensiones, debes vincular la librería directamente en el archivo de configuración de PHP.
- Descarga la versión adecuada de IonCube Loader desde la web oficial de ionCube.
- Extrae los archivos descargados y sube el archivo
ioncube_loader_lin_X.X.so(donde X.X es tu versión exacta de PHP) a la carpeta de extensiones de tu servidor (habitualmente/usr/lib64/php/modules/o/usr/lib/php/20200930/). - Abre el archivo
php.iniprincipal de tu servidor. - Añade la siguiente línea al principio o al final del archivo:
zend_extension = /ruta/exacta/a/tu/ioncube_loader_lin_8.1.so- Reinicia el servidor web y el servicio de PHP según tu entorno:
sudo systemctl restart apache2
sudo systemctl restart php8.1-fpmFunciona porque la directiva zend_extension indica al motor Zend de PHP que cargue el módulo de descifrado en memoria antes de interpretar el código de los módulos de PrestaShop.
Solución 3: Desactivar temporalmente el módulo conflictivo por FTP
Si el error te impide acceder al panel de administración de PrestaShop (Back Office), debes aislar el módulo no compatible para recuperar el acceso.
- Abre tu cliente FTP (como FileZilla) y conéctate al servidor.
- Navega hasta el directorio
/modules/de tu instalación de PrestaShop. - Localiza la carpeta del módulo comercial que genera el error.
- Renombra la carpeta añadiendo un sufijo, por ejemplo, de
modulodescuentosamodulodescuentos_OLD. - Intenta acceder de nuevo al Back Office de PrestaShop.
Al cambiar el nombre del directorio, PrestaShop no encuentra el archivo ejecutable principal del módulo, lo omite durante la carga e impide que el fallo de IonCube bloquee toda la plataforma. Si el problema persiste por archivos en caché, revisa la guía sobre cómo resolver un error SmartyException en PrestaShop para limpiar los archivos temporales.
Solución 4: Ajustar la versión de PHP a una compatible
Si el módulo fue codificado con una versión antigua de IonCube que no soporta PHP 8.1 o PHP 8.2, tendrás que ajustar la versión de PHP de la tienda a una rama anterior soportada por PrestaShop y por el módulo.
- Revisa la matriz de compatibilidad oficial de PrestaShop para confirmar las versiones de PHP admitidas por tu versión concreta del CMS.
- En el panel de control de tu hosting, cambia la versión del dominio a PHP 7.4 o PHP 8.0 según corresponda.
- Comprueba en el archivo
php.inide esa versión que la extensión IonCube correspondiente esté habilitada. - Si sufres problemas de memoria tras el cambio, consulta la solución al error PHP Fatal Allowed Memory Size en PrestaShop para elevar los límites del servidor.
Esta solución restaura la ejecución porque alinea el ejecutable de PHP con las llamadas de decodificación compiladas dentro del archivo cifrado del módulo.
Cómo comprobar que se ha solucionado
Para verificar que IonCube Loader funciona correctamente en PHP, crea un archivo llamado info.php en la raíz de tu sitio web con el siguiente contenido:
<?php
phpinfo();
?>Abre dicho archivo desde tu navegador (midominio.com/info.php) y busca la sección ionCube PHP Loader. Debe indicar que el módulo está cargado junto con el número de versión. Atención: elimina el archivo info.php inmediatamente después de hacer la comprobación para no exponer datos del servidor a terceros.
Si nada de lo anterior funciona
Si el entorno carga IonCube correctamente según phpinfo() pero el módulo sigue fallando, la causa es que el archivo fue cifrado para una versión mayor de PHP incompatible. En este caso, debes revisar los registros de errores del servidor en /var/log/apache2/error.log o en la carpeta /var/logs/ de PrestaShop. Contacta con el desarrollador del módulo comercial para solicitar una versión actualizada y recodificada para versiones recientes de PHP.
Preguntas frecuentes
¿Es obligatorio utilizar IonCube Loader en PrestaShop?
No es obligatorio para el funcionamiento base de PrestaShop. Únicamente se requiere si instalas módulos de terceros cuyo código fuente ha sido protegido y cifrado por el desarrollador.
¿Puedo usar IonCube Loader en PHP 8.2 o superior?
Sí, las versiones recientes de IonCube Loader soportan PHP 8.1 y 8.2. Sin embargo, el módulo de PrestaShop en sí debe haber sido cifrado con un codificador IonCube actualizado para esas versiones específicas de PHP.
¿Cómo sé qué versión de IonCube necesita mi módulo?
El propio mensaje de error de PHP suele indicar la versión exacta del codificador utilzado (por ejemplo, PHP 7.4 encoder). Además, las especificaciones del módulo en la tienda de complementos indican la compatibilidad técnica.
¿Por qué falla IonCube tras actualizar PrestaShop?
El error no se debe al cambio de PrestaShop en sí, sino al cambio involuntario de la versión de PHP durante el proceso de actualización del CMS, lo que rompe la compatibilidad con los módulos cifrados antiguos.