Jump to content

Doble error al ejecutar una copia de prestashop 1.7 - Attempted to call function "idn_to_ascii" from the global namespace


Recommended Posts

Saludos:
Prestashop 1.7.5
PHP 7.2.12

Hemos copiado nuestra web desde un ordenador en windows10 a otro en windows11. El traslado a funcionado correctamente y la web està de nuevo en funcionamiento.
Pero, al comenzar a trabajar con la nueva instalación hemos detectado dos problemas (Sin haber modificado nada):

Problema 1.- ********************
En el back office. Pedidos. Al cambiar el estado de un pedido nos indica:

DEBUG\
Exception\:
-Symfony\Component\Debug\Exception\
-UndefinedFunctionException

-in classes\Mail.php (line 901)

  ' /
  ' if (defined('INTL_IDNA_VARIANT_2003')) {
  ' return $address[0] . '@' . idn_to_ascii($address[1], 0, INTL_IDNA_VARIANT_2003);
  ' }
  ' return $address[0] . '@' . idn_to_ascii($address[1]);
  ' }
  ' /
  ' Generic function to dieOrLog with translations.
  '

DEBUG/
stack trace:
Symfony\Component\Debug\Exception\UndefinedFunctionExceptionSymfony\Component\Debug\Exception\UndefinedFunctionException:
**Attempted to call function "idn_to_ascii" from the global namespace.**   

Al pulsar F5: - A pesar de este error, el registro de cambios se ha realizado correctamnete y aparece el nuevo cambio de estado. No nos consta que se haya enviado el correo al cliente.


Problema 2.- ******************
En la tienda online. 
Se crea un pedido. 
Se va al carro a confirmar el pedido. 
En el momento que se quiere confirmar y gestionar el pago, aparece el error:

-Esta pàgina no funciona
-laweb****.com no puede gestionar la solicitud en este momento.
-**HTTP ERROR 500**

Al refrescar la pantalla con F5 aparece el siguiente texto:
-No se puede utilizar este carro o ya exixte un pedido para este carro.

Al retroceder a la pantalla anterior, sale la pantalla de entrada a nuestra web. 
El carro ha creado correctamente el pedido, pero sin haberse producido el pago.


Hemos leido y encontrado esta posible solución: En el archivo php.ini deve estar activo "intl" (extension=intl). Ya estaba activa.
 

No entendemos porque una copia exacta de la web, en un ordenador funciona y en el otro no.
No sabemos donde buscar. ¿En el sistema operativo? ¿Firewall?

Os agradecemos vuestra ayuda y os damos las gracias por anticipado.

Link to comment
Share on other sites

Saludos: Añado los registros que han aparecido al apagar  e inicir xampp.

[Sun Apr 21 19:44:50.191948 2024] [mpm_winnt:crit] [pid 10648:tid 820] AH02538: Child: Parent process exited abruptly. Child process is ending
[Sun Apr 21 19:44:54.592372 2024] [core:warn] [pid 2928:tid 276] AH00098: pid file C:/xampp/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
PHP Warning:  PHP Startup: Unable to load dynamic library 'intl' (tried: C:\\xampp\\php\\ext\\intl (No se puede encontrar el m\xef\xbf\xbddulo especificado.), C:\\xampp\\php\\ext\\php_intl.dll (No se puede encontrar el m\xef\xbf\xbddulo especificado.)) in Unknown on line 0
[Sun Apr 21 19:44:54.604608 2024] [mpm_winnt:notice] [pid 2928:tid 276] AH00455: Apache/2.4.37 (Win32) OpenSSL/1.1.1 PHP/7.2.12 configured -- resuming normal operations
[Sun Apr 21 19:44:54.604608 2024] [mpm_winnt:notice] [pid 2928:tid 276] AH00456: Apache Lounge VC15 Server built: Oct 18 2018 17:16:04
[Sun Apr 21 19:44:54.604608 2024] [core:notice] [pid 2928:tid 276] AH00094: Command line: 'c:\\xampp\\apache\\bin\\httpd.exe -d C:/xampp/apache'
[Sun Apr 21 19:44:54.604608 2024] [mpm_winnt:notice] [pid 2928:tid 276] AH00418: Parent: Created child process 7584
PHP Warning:  PHP Startup: Unable to load dynamic library 'intl' (tried: C:\\xampp\\php\\ext\\intl (No se puede encontrar el m\xef\xbf\xbddulo especificado.), C:\\xampp\\php\\ext\\php_intl.dll (No se puede encontrar el m\xef\xbf\xbddulo especificado.)) in Unknown on line 0
[Sun Apr 21 19:44:54.963981 2024] [mpm_winnt:notice] [pid 7584:tid 796] AH00354: Child: Starting 150 worker threads.
[Sun Apr 21 19:44:50.191948 2024] [mpm_winnt:crit] [pid 10648:tid 820] AH02538: Child: Parent process exited abruptly. Child process is ending
[Sun Apr 21 19:44:54.592372 2024] [core:warn] [pid 2928:tid 276] AH00098: pid file C:/xampp/apache/logs/httpd.pid overwritten -- Unclean shutdown of previous Apache run?
PHP Warning:  PHP Startup: Unable to load dynamic library 'intl' (tried: C:\\xampp\\php\\ext\\intl (No se puede encontrar el m\xef\xbf\xbddulo especificado.), C:\\xampp\\php\\ext\\php_intl.dll (No se puede encontrar el m\xef\xbf\xbddulo especificado.)) in Unknown on line 0
[Sun Apr 21 19:44:54.604608 2024] [mpm_winnt:notice] [pid 2928:tid 276] AH00455: Apache/2.4.37 (Win32) OpenSSL/1.1.1 PHP/7.2.12 configured -- resuming normal operations
[Sun Apr 21 19:44:54.604608 2024] [mpm_winnt:notice] [pid 2928:tid 276] AH00456: Apache Lounge VC15 Server built: Oct 18 2018 17:16:04
[Sun Apr 21 19:44:54.604608 2024] [core:notice] [pid 2928:tid 276] AH00094: Command line: 'c:\\xampp\\apache\\bin\\httpd.exe -d C:/xampp/apache'
[Sun Apr 21 19:44:54.604608 2024] [mpm_winnt:notice] [pid 2928:tid 276] AH00418: Parent: Created child process 7584
PHP Warning:  PHP Startup: Unable to load dynamic library 'intl' (tried: C:\\xampp\\php\\ext\\intl (No se puede encontrar el m\xef\xbf\xbddulo especificado.), C:\\xampp\\php\\ext\\php_intl.dll (No se puede encontrar el m\xef\xbf\xbddulo especificado.)) in Unknown on line 0
[Sun Apr 21 19:44:54.963981 2024] [mpm_winnt:notice] [pid 7584:tid 796] AH00354: Child: Starting 150 worker threads.
 

Link to comment
Share on other sites

Saludos de nuevo.

Le estoy dando vueltas, no escuentro una solució. Según he leido, la funcion que causa el error es "idn_to_ascii" que no la encuentra. Esta funció lo que tendria que hacer es analizar el texto de la dirección electronica para comprovar que no contiene ningún caracter que no se pueda usar en la dirección email. (acentos, simbolos. . .)

Me ha pasado por la cabeza que puedo sencillamente anularla, haciendo lo siguiente: 

Linea actual correcta:  in classes\Mail.php (line 901)-->    "  return $address[0] . '@' . idn_to_ascii($address[1]);   "

La cambio y lo dejo así.

"  return $address[0] . '@' . ($address[1]);   "

Que alguien me diga en que puede afectar este cambio en el funcionamiento general de la web. A parte de que si alguien pone un carácter no permitido en su dirección email, no será detectado y seguramente dará un error. ¿se bloqueara la web? ¿Puede crear un problema superior? ¿Hay alguna alternativa a esta función?

Saludos.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...