Monovolador Posted February 28, 2018 Share Posted February 28, 2018 (edited) 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 February 28, 2018 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 More sharing options...
gusman126 Posted February 28, 2018 Share Posted February 28, 2018 (edited) 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 February 28, 2018 by gusman126 (see edit history) Link to comment Share on other sites More sharing options...
nadie Posted February 28, 2018 Share Posted February 28, 2018 (edited) 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 February 28, 2018 by nadie (see edit history) Link to comment Share on other sites More sharing options...
Monovolador Posted February 28, 2018 Author Share Posted February 28, 2018 Gracias. Solucionado. Lo que pasa es que php7 me parece una estafa, Google insights no mejora la nota. Lo bueno es que el backoffice va más ligero. Gracias de nuevo Link to comment Share on other sites More sharing options...
nadie Posted February 28, 2018 Share Posted February 28, 2018 (edited) hace 15 minutos, zell9999 dijo: Gracias. Solucionado.Lo que pasa es que php7 me parece una estafa Hombre... una estafa me parece mucho decir. Mira los Benchmarks de PHP7 sobre distintos plataformas. https://kinsta.com/blog/php-7-hhvm-benchmarks/ Edited February 28, 2018 by nadie (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now