File PHP yang sama dapat memakai proxy di terminal dan langsung terhubung saat dilayani oleh PHP-FPM. Mulailah dengan membandingkan proses yang menjalankannya. Terminal Anda menjalankan PHP dengan lingkungan shell-nya; web server mengirim permintaan ke worker yang sudah dibuat FPM.

Periksa lingkungan worker

Konfigurasi pool FPM menyediakan clear_env dan entri env[NAME] eksplisit. Saat pembersihan lingkungan aktif, mengekspor variabel di shell login Anda tidak menempatkannya di worker. Entri pool dapat meneruskan variabel tertentu:

env[http_proxy] = http://203.0.113.10:8080
env[https_proxy] = http://203.0.113.10:8080

Terapkan perubahan konfigurasi melalui prosedur muat ulang FPM yang biasa di deployment Anda. Letakkan nilainya di pool yang benar-benar melayani aplikasi. Pool, akun layanan, atau container yang berbeda dapat menjelaskan mengapa suntingan yang tampaknya benar tidak berefek.

Saat men-debug permintaan langsung, periksa hanya apakah pengaturan yang diharapkan ada. Halaman diagnostik publik yang mencetak nilai lingkungan lengkap dapat membocorkan kredensial proxy beserta rahasia yang tidak terkait.

Lalu periksa transport PHP

libcurl memiliki penanganan lingkungan proxy yang terdokumentasi; handle cURL PHP eksplisit juga punya opsi sendiri. Pembungkus stream HTTP PHP memiliki konfigurasi konteks terpisah. Memberi variabel ke worker tidak membuat setiap API jaringan PHP memakainya.

Itu memberi pemeriksaan dua bagian yang berguna: pastikan apa yang diterima worker, lalu pastikan bagaimana klien HTTP pilihan membaca pengaturan proxy. Jika CLI dan FPM menerima nilai yang sama tetapi tetap berperilaku berbeda, bandingkan opsi klien dan aturan lewati berikutnya. Menyunting profil shell berulang kali tidak dapat menyelesaikan perbedaan di dalam klien HTTP worker.

Artikel terkait