web-dev-qa-db-fra.com

Joomla Administrator Bad Gateway 502 en erreur

Je migre mon Joomla! application depuis un serveur NGinx (cache) + Apache (php) vers un serveur Nginx + PHP-FPM Fast CGI. Lors du test des différentes parties, j’ai constaté que lorsque le backend (administrateur) lançait une erreur (c’est-à-dire qu’il ne pouvait pas écrire ce fichier, etc.), Nginx a répondu par une erreur 502 Bad Gateway.

J'ai vu cette question:

Nginx 502 dans Administrateur

Mais la solution consistait à résoudre le problème à l'origine de l'erreur plutôt que de résoudre le problème de la mauvaise passerelle.

J'ai essayé de localiser le vrai problème et je suis arrivé à PHP) avec comme en-tête d'état:

Statut "0 Impossible d'écrire le fichier"

Je pense que Nginx tente de mapper cet en-tête sur un code d'état HTTP, puis échoue.

Quelqu'un at-il une idée sur la façon de résoudre ce problème?

J'ai vu la directive error_page

nginx.org/en/docs/http/ngx_http_core_module.html#error_page

sur nginx avec fastcgi_intercept_errors

nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_intercept_errors

et avec proxy_intercept_errors

nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors

, mais comme l'en-tête est faux, je pense que je ne peux pas le gérer sous Nginx (semble également ne contrôler que les codes d'état supérieurs à 300)

1
vegetable

Parvenez à le résoudre en ajoutant un en-tête personnalisé au fichier error.php du modèle d’administrateur ... ne savez pas si c’est la meilleure solution.

if ($this->error->getCode() >= 400 && $this->error->getCode() <= 500) {
    header("Status: {$this->error->getCode()}", true, $this->error->getCode());
} else {
    // Here is where MySQL Error would fit (e.g. mysql error 1064)
    header("Status: 500", true, 500);
}
1
vegetable