Jump to content
webbax

[RESOLU] 502 - Bad Gateway sur la pagination produits (back-office)

Recommended Posts

Bonjour à tous,

Est-ce que quelqu'un a déjà rencontré le problème suivant ?

Lorsque je suis dans le back-office de la boutique d'un client en version "1.3.1.1", il y a genre 50 produits sur la catégorie accueil, donc la pagination est active. Seulement lors que je clique sur la 2ème page j'obtiens : "502 Bad Gateway". Sur le serveur en local cela fonctionne correctement en faisant la même opération.

Pourtant dans le reste de la boutique tout fonctionne correctement. Le .htaccess est à jour la configuration de migration a été effectuée avec les bonnes url.

Avez-vous une idée là-dessus avant que je passe au crible tout le processus d'appel de la pagination ?

Merci d'avance

39396_x5BJ4ATcaOyJ0nN33Itg_t

39397_FsZ3LuhQP5cQD4a8zFPz_t

Share this post


Link to post
Share on other sites

Le problème se pose-t-il encore ?

L'URL appelée est-elle bien formée?

Share this post


Link to post
Share on other sites

Bonjour le problème a été résolu de la manière suivante.

Dans la section de mémorisation du filtre (dans le fichier index.php du répertoire admin), il suffit de faire un echo vide et ensuite le traitement s'exécute correctement.

Vers la ligne "40" du fichier "index.php" du répertoire "admin"

/* Filter memorization */
       if (isset($_POST) AND !empty($_POST) AND isset($adminObj->table))
           foreach ($_POST AS $key => $value)
                               echo ' '; // faire un echo vide 
               if (is_array($adminObj->table))
               {
                   foreach ($adminObj->table AS $table)
                       if (strncmp($key, $table.'Filter_', 7) === 0 OR strncmp($key, 'submitFilter', 12) === 0)
                           $cookie->$key = !is_array($value) ? $value : serialize($value);
               }
               elseif (strncmp($key, $adminObj->table.'Filter_', 7) === 0 OR strncmp($key, 'submitFilter', 12) === 0)
                   $cookie->$key = !is_array($value) ? $value : serialize($value);

  • Like 1

Share this post


Link to post
Share on other sites

Thanks ,I have this problem and then i can resolved.

Share this post


Link to post
Share on other sites

Bonjour,

 

 

Faut-il copier ce code à la ligne 40 ou remplacer un code existant. Je ne comprend pas bien la manipulation à faire.

 

Merci

Share this post


Link to post
Share on other sites

Bonjour,

 

 

Faut-il copier ce code à la ligne 40 ou remplacer un code existant. Je ne comprend pas bien la manipulation à faire.

 

Merci

Après

foreach ($_POST AS $key => $value)

 

 

vous devez saisir echo ''; comme indiqué (tout ça vers la ligne 42)

Share this post


Link to post
Share on other sites

J'avais ce problème à corriger urgent pour le boulot à faire et MERCI MILLE FOIS

 

Ce correctif a bien fonctionné !!! ( Vers la ligne "40" du fichier "index.php" du répertoire "admin" )

Share this post


Link to post
Share on other sites

Bonjour,

Ayant eu le même problème j'ai eu recours à la même solution qui fonctionne.

Avant de faire cette petite modif, j'avais essayé de faire une MAJ de ma version 1.4.7 vers la 1.5, celle-ci a échouée (504 Gateway Time Out).

Je suis donc retourné sur ma version 1.4.7.

Quelqu'un sait-il si la petite modif autoriserait la MAJ ?

D'avance merci

CRDLT

Share this post


Link to post
Share on other sites

Merci 1000 fois pour cette astuce qui fonctionne sur 1.4.8.2 (résout également le fait que je ne pouvais même plus filter ou réinitialiser les commandes clients).

Share this post


Link to post
Share on other sites

Merci @Webbax

Nous avions des erreurs type "502 bad gateway" ou affichage d'une page blanche "(null)" depuis quelques jours sur une 1.4.6.2 (OVH) sur certaines pages du B.O. (paniers, clients...). La version PHP a été mise à jour sur la plus récente mais cela ne suffisait pas à résoudre le problème.

L'ajout de:  

echo '';//  

derrière la ligne 

foreach ($_POST AS $key => $value) 

(ligne 84, chez nous, de index.php du répertoire admin)

a corrigé les problèmes rencontrés.

Share this post


Link to post
Share on other sites

bonjour

je suis sur 1.5.6.1 et je rencontre depuis eu ce probleme d'erreur 502

par contre je ne trouve pas cette fameuse ligne "foreach ($_POST AS $key => $value) " pour mettre l'écho derrière

quelqu'un sait il ou je doit mettre l'echo ?

 

cdlt

Share this post


Link to post
Share on other sites

Bonjour,

Je ressors ce thread assez ancien pour partage la solution que j'ai trouvé, si jamais ça peut servir à quelqu'un - celle proposée plus haut ne fait en fait que contourner le problème (elle court-circuite une partie du code).

J'ai dû intervenir sur une vieille version 1.4.11 impossible à mettre à jour (trop de modifs), et je pense avoir localisé la source du problème. En fait, pour chaque champ de filtre dans les listings, Prestashop modifie puis écrit le cookie qui sauvegarde les valeurs saisies. Or, cela déclenche l'envoi de headers multiples (Set-Cookie) avec la requête, et si Apache ne limite pas leur nombre (d'où l'absence d'erreur 500 ou php), certains hébergeurs (dont OVH notamment) le font, ce qui cause l'erreur 502.

Pour contourner le problème, j'ai modifié la classe Cookie (dans classes/Cookie.php), en replaçant la partie ci-dessous (vers la ligne 307) :

	public function write()
	{
		$cookie = '';

		/* Serialize cookie content */
		if (isset($this->_content['checksum'])) unset($this->_content['checksum']);
		foreach ($this->_content as $key => $value)
			$cookie .= $key.'|'.$value.'¤';

		/* Add checksum to cookie */
		$cookie .= 'checksum|'.crc32($this->_iv.$cookie);

		/* Cookies are encrypted for evident security reasons */
		return $this->_setcookie($cookie);
	}

Par celle-ci :

	public function write()
	{
		$cookie = '';

		/* Serialize cookie content */
		if (isset($this->_content['checksum'])) unset($this->_content['checksum']);
		foreach ($this->_content as $key => $value)
			$cookie .= $key.'|'.$value.'¤';

		/* Add checksum to cookie */
		$cookie .= 'checksum|'.crc32($this->_iv.$cookie);

		/* Cookies are encrypted for evident security reasons */
		if ( empty( $this->_dataToWrite ) )
		{
			register_shutdown_function( array( $this, 'delayedWrite' ) );
		}
		$this->_dataToWrite = $cookie;

		return true;
	}


	/**
	 * Content for the delayed cookie write
	 * @var string
	 */
	protected $_dataToWrite;


	/**
	 * Callback for delayed cookie write
	 * @return void
	 */
	public function delayedWrite()
	{
		$this->_setcookie($this->_dataToWrite);
	}

Cela a résolu tous les problèmes d'erreur 502 en ce qui me concerne. Je n'ai pas effectué de tests extensifs non plus, donc je ne garantit pas que cela n'affecte pas une fonction ou une autre, mais pour l'instant rien à signaler 😀

Share this post


Link to post
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...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More