Error use of undefined constant intl_idna_variant_uts46 en PrestaShop

Prueba primero a cambiar la versión de PHP


Si has actualizado recientemente la versión de PrestaShop 1.7.x y no puedes entrar al BackOffice, revisa el archivo error_log que hay en la carpeta donde están los archivos del Back Office y revisa a ver si ves el siguiente error:


use of undefined constant intl_idna_variant_uts46 - assumed 'intl_idna_variant_uts46'


Si es así, prueba a cambiar la versión de PHP de tu tienda por la versión 7.3.


Limpia las cookies y los temporales del navegador y prueba de nuevo a entrar.



Otra solución adicional


Si sigue persistiendo el error, prueba a modificar una línea del siguiente archivo:


/src/Core/Util/InternationalizedDomainNameConverter.php


Cambia la línea siguiente:


return $parts[0] . '@' . idn_to_utf8($parts[1], 0, INTL_IDNA_VARIANT_UTS46);


Por esta otra:


return $parts[0] . '@' . idn_to_utf8($parts[1], 0, intval(INTL_IDNA_VARIANT_UTS46));


Créditos: https://www.prestashop.com/forums/topic/1027541-cannot-login-to-my-shop-backend/



Si recibes otro error relacionado: "PHP Deprecated:  idn_to_utf8(): INTL_IDNA_VARIANT_2003"


Comprueba que existan las siguientes tablas en tu PrestaShop:


  • _employee_session
  • _customer_session


Si no es así, deberás correr el siguiente comando MySQL en PHPMyAdmin (revisa que el prefijo de las tablas de tu base de datos empiezan por "ps_" si no tendrás que adaptarlo en estos 2 comandos):


CREATE TABLE `ps_employee_session` (
  `id_employee_session` int(11) unsigned NOT NULL auto_increment,
  `id_employee` int(10) unsigned DEFAULT NULL,
  `token` varchar(40) DEFAULT NULL,
  PRIMARY KEY `id_employee_session` (`id_employee_session`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


CREATE TABLE `ps_customer_session` (
  `id_customer_session` int(11) unsigned NOT NULL auto_increment,
  `id_customer` int(10) unsigned DEFAULT NULL,
  `token` varchar(40) DEFAULT NULL,
  PRIMARY KEY `id_customer_session` (`id_customer_session`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


Ahora deberías poder entrar a PrestaShop con normalidad.