php / php/php-src

php-fpm fail to process uris above 32kb in length

Ouverte
#12,982 6 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Bug SAPI: fpm Status: Needs Triage
Langage dominant
C
Étoiles
40.4k
Forks
8.1k
Merge moyen
2 j 13 h
PR mergées (30 j)
96

Description

Description

Assuming php-fpm and nginx configured to allow large URLs ( http{ large_client_header_buffers 8 999k; ...} )
The following code:

<?php
$url = "http://localhost/?a=" . str_repeat("a", 33*1024);
$ch = curl_init($url);
curl_exec($ch);

Resulted in

<html>
<head><title>502 Bad Gateway</title></head>
<body>
<center><h1>502 Bad Gateway</h1></center>
<hr><center>nginx/1.22.1</center>
</body>
</html>

and /var/log/nginx/error.log containing

2023/12/20 06:15:30 [error] 7980#7980: *32033 writev() failed (32: Broken pipe) while sending request to upstream, client: 162.248.164.115, server: localhost, request: "GET /?a=aaaaaaaaaa(...)

and nothing in /var/log/php8.2-fpm.log

But I expected... a notice in the php-fpm log that something went wrong? and maybe a HTTP 414 Request-URL too long error instead of a 502 Bad Gateway ?

PHP Version

PHP 8.2.7

Operating System

Debian 12

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par reproduire l’URI de 33 Ko avec PHP 8.2.7, php-fpm et la configuration de tampon nginx indiquée. Suivez la manière dont php-fpm et nginx traitent la requête surdimensionnée et examinez les journaux nginx et php-fpm signalés ; le travail est considéré comme terminé lorsque l’échec est géré et signalé avec une réponse appropriée, plutôt qu’avec un 502 inexpliqué.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
nginx, php
Domaine
backend
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.