Jump to content

Prestashop 1.6.1.18 + PHP7 -> Pagina en blanco - Problema leomanagewidgets


Monovolador

Recommended Posts

Hola, 

Tenemos la versión 1.6.1.18  de prestashop (la última versión 1.6.X a día de hoy) y queríamos cambiar la versión de PHP de la 5.6.30 que utilizamos ahora a la 7.0.15 (FPM) que nos permite nuestro hosting.

Tras cambiar a PHP7, la pagina aparece en blanco. Se puede acceder al backoffice pero si no va la web no sirve de nada. 

Tras analizar el archivo de log_error hemos deducido que el problema está en un archivo de la plantilla que utilizamos (Leo theme). Concretamente el archivo es el leomanagewidgets.php y el error lo marca en la línea 1403.

En esa línea hay algo así:

		// Check errors
		if ((bool)$disable_non_native_modules && Hook::$native_module && count(Hook::$native_module) && !in_array($module_name, self::$native_module))
			return;

		if (!($moduleInstance = Module::getInstanceByName($module_name)))
			return;

		if ($use_push && !$moduleInstance->allow_push)
			continue; //EL ERROR LO MARCA EN ESTA LÍNEA (1403)
		// Check which / if method is callable
		$hook_callable = is_callable(array($moduleInstance, 'hook'.$hook_name));
		$hook_retro_callable = is_callable(array($moduleInstance, 'hook'.$retro_hook_name));

		if (($hook_callable || $hook_retro_callable) && Module::preCall($moduleInstance->name))
		{
			$hook_args['altern'] = ++$altern;

			if ($use_push && isset($moduleInstance->push_filename) && file_exists($moduleInstance->push_filename))
				Tools::waitUntilFileIsModified($moduleInstance->push_filename, $moduleInstance->push_time_limit);

			// Call hook method
			if ($hook_callable)
				$display = $moduleInstance->{'hook'.$hook_name}($hook_args);

			elseif ($hook_retro_callable)
				$display = $moduleInstance->{'hook'.$retro_hook_name}($hook_args);

			$output .= $display;
		}


		if ($different_shop)
		{
			$context->shop = $old_shop;
			$context->shop->setContext($old_context, $shop->id);
		}
		return $output; // Return html string
	}

 

He probado a contactar con Leotheme pero dudo que me contesten...

Alguien sabe como arreglar esto? Se utiliza alguna clase que no sea compatible con PHP7?

T_T

Gracias de antemano

Adjunto el archivo por si a alguien le sirve

 

leomanagewidgets.php

Edited by nadie
Moderación del foro edita el título del tema para ser más descriptivo con la duda (see edit history)
Link to comment
Share on other sites

Activa el debug y lo mas seguro es que salga mas información.

 

Disculpa, ya esta claro....

 

El php 7.0 y 7.1 ha desactivado la opcion de "continue" fuera de un foreach.

 

Borra esa linea, la 

if ($use_push && !$moduleInstance->allow_push)
			continue; //EL ERROR LO MARCA EN ESTA LÍNEA (1403)

debes quitar continue

if ($use_push && !$moduleInstance->allow_push)
			// comentario continue; 

 

busca si hay algun continue mas por el fichero, si no esta dentro de un foreach, comentalo

Edited by gusman126 (see edit history)
Link to comment
Share on other sites

hace 1 hora, zell9999 dijo:

Hola, 

Tenemos la versión 1.6.1.18  de prestashop (la última versión 1.6.X a día de hoy) y queríamos cambiar la versión de PHP de la 5.6.30 que utilizamos ahora a la 7.0.15 (FPM) que nos permite nuestro hosting.

Tras cambiar a PHP7, la pagina aparece en blanco. Se puede acceder al backoffice pero si no va la web no sirve de nada. 

Tras analizar el archivo de log_error hemos deducido que el problema está en un archivo de la plantilla que utilizamos (Leo theme). Concretamente el archivo es el leomanagewidgets.php y el error lo marca en la línea 1403.

En esa línea hay algo así:


		// Check errors
		if ((bool)$disable_non_native_modules && Hook::$native_module && count(Hook::$native_module) && !in_array($module_name, self::$native_module))
			return;

		if (!($moduleInstance = Module::getInstanceByName($module_name)))
			return;

		if ($use_push && !$moduleInstance->allow_push)
			continue; //EL ERROR LO MARCA EN ESTA LÍNEA (1403)
		// Check which / if method is callable
		$hook_callable = is_callable(array($moduleInstance, 'hook'.$hook_name));
		$hook_retro_callable = is_callable(array($moduleInstance, 'hook'.$retro_hook_name));

		if (($hook_callable || $hook_retro_callable) && Module::preCall($moduleInstance->name))
		{
			$hook_args['altern'] = ++$altern;

			if ($use_push && isset($moduleInstance->push_filename) && file_exists($moduleInstance->push_filename))
				Tools::waitUntilFileIsModified($moduleInstance->push_filename, $moduleInstance->push_time_limit);

			// Call hook method
			if ($hook_callable)
				$display = $moduleInstance->{'hook'.$hook_name}($hook_args);

			elseif ($hook_retro_callable)
				$display = $moduleInstance->{'hook'.$retro_hook_name}($hook_args);

			$output .= $display;
		}


		if ($different_shop)
		{
			$context->shop = $old_shop;
			$context->shop->setContext($old_context, $shop->id);
		}
		return $output; // Return html string
	}

 

He probado a contactar con Leotheme pero dudo que me contesten...

Alguien sabe como arreglar esto? Se utiliza alguna clase que no sea compatible con PHP7?

T_T

Gracias de antemano

Adjunto el archivo por si a alguien le sirve

 

leomanagewidgets.php

Respecto a la pantalla en blanco, ¿Habilitastes del debug: https://www.prestashop.com/forums/topic/232476-¿qué-hacer-cuando-se-queda-la-pantalla-en-blanco-en-prestashop/  y te salio el error mencionado en la pantalla en blanco?

 

Respecto al módulo "leomanagewidgets", por aquí: https://www.prestashop.com/forums/topic/637571-error-php/?do=findComment&comment=2692957 un aporte del usuario @digitalDot para que funcione con PHP 7

Saludos

Edited by nadie (see edit history)
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...