Bakit Nawawala ng PHP-FPM ang Proxy na Gumagana sa Iyong Terminal
Sundin ang configuration ng proxy sa mga worker ng PHP-FPM at ibukod ang kanilang environment mula sa mga context ng PHP stream.
Ang parehong PHP file ay maaaring gumamit ng proxy sa terminal at dumiretso kapag pinaglilingkuran ng PHP-FPM. Simulan sa paghahambing ng mga prosesong nagpapatakbo nito. Sinisimulan ng iyong terminal ang PHP gamit ang shell environment; nagpapadala ang web server ng request sa mga worker na nagawa na ng FPM.
Tingnan ang environment ng worker
Ang configuration ng FPM pool ay nagbibigay ng clear_env at tahasang env[NAME] entries. Kapag naka-enable ang environment clearing, ang pag-export ng variable sa login shell ay hindi ito inilalagay sa worker. Ang mga pool entry ay maaaring magpasa ng mga piling variable:
env[http_proxy] = http://203.0.113.10:8080
env[https_proxy] = http://203.0.113.10:8080
Ilapat ang mga pagbabago sa configuration sa pamamagitan ng normal na FPM reload procedure ng iyong deployment. Ilagay ang mga value sa pool na aktuwal na naglilingkod sa application. Ang ibang pool, service account, o container ay maaaring magpaliwanag kung bakit walang epekto ang isang tila tamang edit.
Kapag nagde-debug ng live na request, tingnan lamang kung umiiral ang mga inaasahang setting. Ang pampublikong diagnostic page na nagpi-print ng kumpletong environment values ay maaaring maglantad ng proxy credentials kasama ng mga walang kaugnayang sikreto.
Pagkatapos ay suriin ang transport ng PHP
Ang libcurl ay may dokumentadong paghawak ng proxy environment; ang tahasang PHP cURL handle ay may sariling mga opsyon din. Ang HTTP stream wrapper ng PHP ay may hiwalay na context configuration. Ang pagbibigay ng mga variable sa worker ay hindi nagpapagawa sa bawat PHP network API na gamitin ang mga ito.
Nagbibigay ito ng kapaki-pakinabang na dalawang-bahaging pagsusuri: kumpirmahin ang natanggap ng worker, pagkatapos ay kumpirmahin kung paano binabasa ng piniling HTTP client ang mga setting ng proxy. Kung ang CLI at FPM ay tumatanggap ng parehong value ngunit magkaiba pa rin ang kilos, ihambing sa susunod ang mga opsyon ng client at mga patakaran sa bypass. Ang paulit-ulit na pag-edit ng shell profile ay hindi makakapagresolba ng pagkakaiba sa loob ng HTTP client ng worker.