Pourquoi PHP-FPM perd le proxy qui fonctionne dans votre terminal
Suivez la configuration du proxy jusque dans les workers PHP-FPM et distinguez leur environnement des contextes de flux PHP.
Le même fichier PHP peut utiliser un proxy dans un terminal et sortir en direct lorsqu'il est servi par PHP-FPM. Commencez par comparer les processus qui l'exécutent. Votre terminal lance PHP avec l'environnement de son shell ; le serveur web envoie une requête à des workers que FPM a déjà créés.
Examinez l'environnement du worker
La configuration du pool FPM fournit clear_env et des entrées env[NAME] explicites. Lorsque le nettoyage de l'environnement est activé, exporter une variable dans votre shell de connexion ne la place pas dans un worker. Les entrées du pool peuvent transmettre certaines variables :
env[http_proxy] = http://203.0.113.10:8080
env[https_proxy] = http://203.0.113.10:8080
Appliquez les changements de configuration via la procédure habituelle de rechargement FPM de votre déploiement. Placez les valeurs dans le pool qui sert réellement l'application. Un autre pool, compte de service ou conteneur peut expliquer pourquoi une modification apparemment correcte reste sans effet.
Lors du débogage d'une requête en cours, vérifiez seulement que les réglages attendus existent. Une page de diagnostic publique qui affiche les valeurs complètes de l'environnement peut exposer des identifiants de proxy et d'autres secrets.
Vérifiez ensuite le transport PHP
libcurl dispose d'une gestion documentée de l'environnement proxy ; un handle cURL PHP explicite a aussi ses propres options. Le wrapper de flux HTTP de PHP possède une configuration de contexte distincte. Fournir des variables à un worker ne fait pas consommer celles-ci par toutes les API réseau de PHP.
Cela donne une vérification utile en deux temps : confirmez ce que le worker a reçu, puis confirmez comment le client HTTP choisi lit les réglages proxy. Si le CLI et FPM reçoivent les mêmes valeurs mais se comportent encore différemment, comparez ensuite les options du client et les règles de contournement. Modifier sans cesse le profil du shell ne peut pas régler une différence interne au client HTTP du worker.