Por qué PHP-FPM pierde el proxy que funciona en tu terminal
Sigue la configuración del proxy hasta los trabajadores de PHP-FPM y distingue su entorno de los contextos de flujo de PHP.
El mismo archivo PHP puede usar un proxy en un terminal y salir directamente cuando lo sirve PHP-FPM. Empieza comparando los procesos que lo ejecutan. Tu terminal inicia PHP con el entorno de su shell; el servidor web envía una solicitud a trabajadores que FPM ya ha creado.
Mira el entorno del trabajador
La configuración del pool de FPM proporciona clear_env y entradas explícitas env[NAME]. Con la limpieza del entorno activada, exportar una variable en tu shell de inicio de sesión no la coloca en un trabajador. Las entradas del pool pueden pasar variables seleccionadas:
env[http_proxy] = http://203.0.113.10:8080
env[https_proxy] = http://203.0.113.10:8080
Aplica los cambios de configuración mediante el procedimiento habitual de recarga de FPM de tu despliegue. Pon los valores en el pool que realmente sirve la aplicación. Un pool, una cuenta de servicio o un contenedor distintos pueden explicar por qué una edición aparentemente correcta no tiene efecto.
Al depurar una solicitud activa, comprueba solo si existen los ajustes esperados. Una página de diagnóstico pública que imprima valores completos del entorno puede exponer credenciales del proxy junto con secretos no relacionados.
Después revisa el transporte de PHP
libcurl tiene un manejo documentado del entorno de proxy; un identificador cURL de PHP explícito también tiene sus propias opciones. El envoltorio de flujo HTTP de PHP tiene una configuración de contexto aparte. Suministrar variables a un trabajador no hace que todas las API de red de PHP las consuman.
Eso da una comprobación útil en dos partes: confirma qué recibió el trabajador y luego confirma cómo lee el cliente HTTP elegido los ajustes de proxy. Si CLI y FPM reciben los mismos valores pero aún se comportan de forma distinta, compara a continuación las opciones del cliente y las reglas de omisión. Editar repetidamente el perfil del shell no puede resolver una diferencia dentro del cliente HTTP del trabajador.