Error 500 en prestashop 1.7 al acceder a backoffice



[do_widget id=mailpoet_form-2]

En esta entrada voy a explicar cómo solucionar o mejor dicho cómo detectar el famoso error 500 en prestashop 1.7 al acceder a backoffice.


¿Cómo y por qué ha aparecido este error 500 en prestashop 1.7 al acceder a backoffice?

Hay muchas posibles causas del porqué de este error 500 en prestashop 1.7 al acceder a backoffice. En mi caso la última vez que me ha aparecido ha sido por algo tan simple como acceder al panel de administración, desactivar las URLs amigables y volver a activarlas.

Prestashop a pesar de ser una plataforma muy potente y fiable, al mismo tiempo es delicada. Y por el gran volumen de datos que maneja, en ocasiones no funciona como nos gustaría.

En mi caso, no me funcionaba el acceso al backoffice y cada vez que insertaba la URL para hacer login. Esta mostraba la página que podéis ver en la imagen anterior.

Esto es una auténtica desesperación para todo aquel que no tenga conocimientos a nivel de programación. Y para quienes los tenemos también :).

¿Cómo se manifiesta el error 500 en backoffice de prestashop?

Una vez empleado mucho tiempo en documentarme acerca de cómo solucionar este tema. Tanto leyendo en foros como ojeando otros posts de programadores. Me di cuenta que no siempre el problema era originado del mismo modo. Eso sí, en casi todas las ocasiones la solución era muy similar, o al menos detectar esta.

El error puede reproducirse de las siguientes formas: 500 Internal Server Error,  HTTP 500 – Error interno del servidor, Error interno del servidor, HTTP 500 Error interno, Error 500 y HTTP Error 500.

La frase que viene junto al error puede ser algo como esto: La página luisjordan.net no puede procesar esta solicitud ahora.

A este efecto se le conoce como Server-side, que quiere decir que ago salió mal a la hora de interpretar el código fuente desde nuestro servidor o servicio de hosting.

Encontrar el error 500 en backoffice de prestashop paso a paso.

[do_widget id=mailpoet_form-2]

Antes de nada, vamos a activar el informe de errores en Prestashop. Esto se consigue del siguiente modo:

Abre con tu editor de código fuente el script config/defines.inc.php que está en el directorio raíz de tu tienda, busca y cambia false por true

/* Debug only */
if (!defined('_PS_MODE_DEV_')) {
  define('_PS_MODE_DEV_', false);
}

Hecho esto, en la mayoría de casos ya podemos acceder a nuestro panel de administración con el modo debug a true, pero si volvemos a desactivar el modo debug vuelve a aparecer el error o pantalla en blanco.

Ya que tenemos alguna pista acerca del problema (bien accediendo a Front-End o revisando nuestra consola), ahora vamos a resolverlo.

Solucionando el error 500 en backoffice de prestashop.

Vamos ahora a darle caña a este error…

Lo que he tenido que hacer es comprobar los módulos instalados de terceros y ver que uno de ellos tenía un problema en la llamada a un método de una clase en particular. Tras resolverlo la pantalla anteriormente mostrada ha desaparecido.

Nuevo problema tras solucionar el anterior.

En muchas ocasiones unos problemas son derivados de otros. Es por eso que el concepto principal de esta entrada es saber cómo detectar estos errores, no solucionarlos. En cada caso la solución puede aplicar de diferente modo.

De todos modos, voy a continuar con la explicación pero tengamos en cuenta que desde aquí el problema ya es personalizado.

¿Qué sucede ahora tras haber detectado y reparado el error?

Pues parece ser que con esto no es suficiente, continuamos en la situación de que al desactivar el modo debug vuelve el error 500.

Para poder solucionar esto, he tenido que activar también el display errors a on. Para ello en el mismo script config/defines.inc.php cambiamos el off por el on en la línea…

@ini_set('display_errors', 'off');

Una vez hecho este cambio, me reportaba a un error en un script de producción, su ruta es la siguiente: /app/cache/prod/classes.php

Al llegar a esta ruta desde mi FTP, he comprobado que existían dos directorios internos, dev y pro.

Comparando el fichero de producción con el de desarrollo.

Ya que en el entorno de desarrollo no saltaba el error, la comprobación era obvia.

He abierto ambos scripts utilizando un programa de comprobación de diferencias como puede ser DiffMerge o WinMerge y justo ahi estaba la cosa.

En el script de producción tenía una línea que en el de desarrollo no aparecía. Y la línea que me indicaba el error era esta:

namespace {require __DIR__.'/../../../vendor/symfony/symfony/src/Symfony/Component/Debug/ErrorHandler.php';}

Bien, si llegados aquí la complejidad no ha sido alta, ahora resulta que al comentar dicha línea y subir por FTP de nuevo el script de producción, el error desaparece. También es algo lógico, pero…

Vuelvo a descomentar la línea, subo el script de nuevo por FTP, limpio caché y demás vía backoffice en mi e-commerce y aparece la magia de la programación en prestashop.

Todo funciona perfectamente!

Lo sé, a veces esto de la programación con CMS complejos es algo costoso, pero bueno la finalidad en este caso es lo importante. It’s working!

La explicación que puedo sacar al respecto es que algo estuviera mal codificado y crease un error. Pero como bien digo, hay comportamientos difíciles de explicar.

Ah y recuerda!!!, si quieres estar al día acerca de la creación de nuevas entradas, no te olvides de suscribirte al blog.

[do_widget id=mailpoet_form-2]

Publicaciones relacionadas

31 comentarios en “Error 500 en prestashop 1.7 al acceder a backoffice”

  1. Estefanía (espero87)

    Hola Luis,
    El error que me reporta a mi es este, pero la verdad, es que no tengo ni idea de por donde pillarlo.
    Hola Luis,

    in FrontController.php line 798
    at ErrorHandler->handleError(‘2’, ‘Cannot modify header information – headers already sent by (output started at /homepages/24/d579549833/htdocs/clickandbuilds/Multitienda/index.php:30)’, ‘/homepages/24/d579549833/htdocs/clickandbuilds/Multitienda/classes/controller/FrontController.php’, ‘798’, array(‘canonical_url’ => ‘http://lcq.es/es/’ ‘match_url’ => ‘http://lcq.es/’ ‘params’ => array(), ‘url_details’ => array(‘scheme’ => ‘http’, ‘host’ => ‘lcq.es’, ‘path’ => ‘/es/’), ‘value’ => ‘index’, ‘key’ => ‘controller’, ‘excluded_key’ => array(‘isolang’, ‘id_lang’, ‘controller’, ‘fc’, ‘id_product’, ‘id_category’, ‘id_manufacturer’, ‘id_supplier’, ‘id_cms’), ‘str_params’ => », ‘final_url’ => ‘http://lcq.es/es/’ ‘redirect_type’ => ‘302’))
    at header(‘HTTP/1.0 302 Moved’) in FrontController.php line 798
    at FrontControllerCore->canonicalRedirection(‘http://lcq.es/es/’) in FrontController.php line 444
    at FrontControllerCore->init() in Controller.php line 186
    at ControllerCore->run() in Dispatcher.php line 369
    at DispatcherCore->dispatch() in index.php line 45

    1. Hola Estefanía, ¿qué tal?, es un placer tenerte por mi blog.
      Veamos … entiendo que tienes acceso vía FTP a tu site, ¿verdad?

      Deberías empezar por hacer esto:

      1 – Abre con tu editor de código fuente el script config/defines.inc.php que está en el directorio raíz de tu tienda, busca y cambia false por true…

      /* Debug only */
      if (!defined(‘_PS_MODE_DEV_’)) {
      define(‘_PS_MODE_DEV_’, false);
      }

      2 – Para poder solucionar esto, he tenido que activar también el display errors a on. Para ello en el mismo script config/defines.inc.php cambiamos el off por el on en la línea…

      @ini_set(‘display_errors’, ‘off’);

      De este modo ya deberías poder acceder a tu panel de administración. Dime si es así.
      Saludos!

  2. Estefanía (espero87)

    Perdona Luis,
    Se me ha pasado comentarte que es multitienda y la que está teniendo problemas es la principal lcq.es . La otra lastablas.lcq.es funciona a la perfección y no me da problemas. Ahora si puedo acceder a las 2 webs, pero a las páginas cms de lcq.es no puedo acceder desde el móvil.
    Tampoco puedo entrar al backoffice a no ser que esté en modo debug.
    Nunca me había pasado un problema de este tipo, solamente me he dedicado a modificar el diseño, algo con lo que llevo 3 semanas. Pero de un día para otro algo falla.
    Saludos y gracias!

    1. Si, prestashop es delicado en algunos aspectos.

      A mi me pasó algo similar aquí: http://luisejo.esy.es/tienda/ (Esto es un entorno de desarrollo).
      Mi problema apareció ya que estaba creando un módulo a medida (el de búsqueda) y puse código que no le gustaba a prestashop. La solución fue costosa como indico en el post, pero los pasos a seguir son esos.

      ¿Dispones de un backup reciente?
      ¿Tienes conocimientos a nivel de programación?

  3. Hola Luis,
    Lo que tengo es una descarga de todos los ficheros del FTP, pero desde prestashop no hice ninguna, tampoco desde el servidor 1&1. A nivel de programación muy muy poca, lo basico para el diseño y algo de php.
    Saludos!

    1. Con el modo debug activado en el panel de administración, ¿has probado a vaciar la caché?
      Si ya has hecho esto, para dar con el error tendría que empezar a depurar el código de tu site.
      Si estás interesada en saber de mis servicios puedes escribirme directamente por correo a mi dirección personal: luisjordan1979@gmail.com

    1. ¿De qué fecha son los backups?
      ¿Se ha instalado algún módulo o modificado código fuente desde el último backup realizado?

  4. Buenas, he probado a cambiar la primera parte que has comentado para entrar al back-office pero me sigue sin entrar todavía. Estoy trabajando en local todavía, Me puedes ayudar por favor

  5. Hola, acabo de instalar Prestashop usando XAMPP V3.2.2 y Versión de PHP: 7.2.2

    Al terminar la instalación salio que todo estaba correcto, y me dejo abrir Front Office sin problema, pero no puedo acceder a Back Office, de hecho jamas eh podido hacerlo desde que hice la instalacion.

    Y me sale el siguiente error

    Whoops, looks like something went wrong.
    1/1
    FatalErrorException in AdminLoginController.php line 232:
    Compile Error: Declaration of AdminLoginControllerCore::setMedia() must be compatible with AdminControllerCore::setMedia($isNewTheme = false)
    in AdminLoginController.php line 232

    Alguien podría ayudarme, aun no conozco como funciona BackOffice de Prestashop, debido a este error que no me deja en paz.

    1. Hola Víctor, ¿la versión de Prestashop instalada es la 1.7.x?
      ¿Has probado a hacer la instalación sobre PHP 7.0?, creo recordar que sobre la versión 7.2 daba algún error.

  6. Buenas!
    Gracias por tu ayuda Luis, a mi me pasaba algo parecido y un poco más y me vuelvo loca buscando el fallo..
    Lo que me pasaba es que había aumentado mi hosting a uno superior y al hacer este cambio y la migración correspondiente me dejó de funcionar el backoffice de mi tienda… Buscando buscando di con tu web y di con la clave.
    Al realizar el cambio de hosting la versión de php me cambió de 5.6 a 7. El prestashop con el que trabajaba era un 1.7 y algo debe ocurrir que no iba… pero al cambiar la versión y poner la anterior PUM! Magia jejej

    Lo dejo por aquí por si a alguien le ha pasado y le puede servir de ayuda.

    Un saludo!

    1. Muchas gracias por tu aporte María, y si tienes toda la razón.
      Seguro que a los compañeros que nos leen les es de mucha utilidad.

  7. hola

    Whoops, looks like something went wrong.
    1/1
    FatalErrorException in AdminDashboardController.php line 539:
    Compile Error: Declaration of AdminDashboardControllerCore::setMedia() must be compatible with AdminControllerCore::setMedia($isNewTheme = false)
    in AdminDashboardController.php line 539

      1. Hola , me pasa lo mismo. Yo recien acabo de subir mi prestashop a mi hosting. Mi web va bien pero al intentar acceder al backoffice me sale el error. Aún no he podido acceder desde que la subí.

        1. Hola Melisa, te recomiendo activar el modo debug desde el código fuente y subir el script por FTP y una vez hecho, podrás ver el porqué del fallo.

  8. Buenas tardes,
    Tengo un http error 500 igual a la forma en que lo describes en la parte inicial de este post.
    Tengo la tienda de mi cliente publicada, pero el backoffice está en modo debug, si lo quito de este modo vuelve a salir el http error 500.

    He seguido sus indicaciones hasta la parte final: ( Bien, si llegados aquí la complejidad no ha sido alta, ahora resulta que al comentar dicha línea y subir por FTP de nuevo el script de producción, el error desaparece. También es algo lógico, pero…
    Vuelvo a descomentar la línea, subo el script de nuevo por FTP, limpio caché y demás vía backoffice en mi e-commerce y aparece la magia de la programación en prestashop)

    ¿Podrías por favor comentar de forma explícita «para neófitos», teniendo en cuenta que tengo Cpanel, a qué script te refieres y como comentar y descomentar la línea?
    Espero tu ayuda.
    Muchas gracias por adelantado. Elviro

  9. Hola.
    Yo he llegado aquí buscando info sobre el dichoso 500.
    Estábamos actualizando de PS 1.7.2. a 1.7.3. Ha copiado todos los archivos pero la instalación se ha quedado congelada en «Todos los archivos actualizados. Actualización de bases de datos en curso…»
    DE modo que hemos intentado volver a la anterior y ahí ha empezado la pesadilla.
    No tenemos acceso al BO y después de modificar los archivos encontramos el error:
    [PrestaShopDatabaseException]

    Table ‘db711426640.aucq_shop_url’ doesn’t exist

    Imagino que la BD se ha quedado a medio actualizar.
    ¿Puede ser?

    ¿Podríamos restaurar la BD desde FTP?

    Saludos

  10. Buenas tardes, os he leído a todos pero no encuentro la solucion a mi error. El tema ha sido que actualizandola a la ultima version ha ocurrido un error y me salia el error 500, haciendo vuestros pasos ahora me sale
    FatalThrowableError in index.php line 84: Undefined class constant ‘HEADER_X_FORWARDED_ALL’
    pero no tengo manera de poder entrar al back office y restaurar una copia de sguridad.

    Muchas Gracias

        1. Como bien explico en las entradas, el error puede deberse a muchos factores: Error a la hora de trabajar el código fuente, error por haber instalado un módulo que no es compatible o tiene errores, error tras alguna actualización, etc.
          Si queréis que revise personalmente el error, podéis contactarme directamente escribiendo a: luisjordan1979@gmail.com
          Saludos!

  11. Excelente, muy buena guía, solo hay que tratar de aplicarlo en el error que tiene cada uno, es algo muy general que podemos hacerlo especifico si tenemos cuidado.

  12. Hola , me da error 500 al pinchar en productos, he puesto true en vez de false en a linea 29 de config/defines.inc.php (‘_PS_MODE_DEV_’, false); y me sale esto:

    Notice en línea 101 en archivo /home/********/public_html/********.com/vendor/symfony/symfony/src/Symfony/Component/HttpFoundation/Session/Storage/Handler/StrictSessionHandler.php
    [8] SessionHandler::gc(): ps_files_cleanup_dir: opendir(/var/cpanel/php/sessions/ea-php56) failed: Permission denied (13)

    1. Hola jakc zim

      En tu caso el error parece estar claro, necesitas permisos y parece ser que no los tienes.
      ¿Pudiste avanzar algo más al respecto?

      Saludos.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Responsable de los datos: Luis María Jordán Muñoz | Finalidad: Responder a la solicitud que me envíes y ofrecerte información | Legitimación: Tu consentimiento de forma expresa | Destinatario: Webempresa mi proveedor de hosting | Derechos: Tienes derecho al acceso, rectificación, supresión, limitación, portabilidad y olvido, para más información, te dejo enlace a mi política de privacidad ... enlace