PHP-FPM Terminalinizde Çalışan Proxy'yi Neden Kaybeder?
Proxy yapılandırmasını PHP-FPM çalışanlarına kadar izleyin ve ortamlarını PHP akış bağlamlarından ayırın.
Aynı PHP dosyası terminalde proxy kullanabilir ve PHP-FPM tarafından sunulduğunda doğrudan bağlanabilir. Onu çalıştıran süreçleri karşılaştırarak başlayın. Terminaliniz PHP'yi kabuk ortamıyla başlatır; web sunucusu, FPM'nin zaten oluşturduğu çalışanlara bir istek gönderir.
Çalışanın ortamına bakın
FPM havuz yapılandırması clear_env ve açık env[NAME] girdileri sağlar. Ortam temizleme etkinleştirildiğinde, oturum açma kabuğunuzda bir değişkeni dışa aktarmak onu bir çalışana yerleştirmez. Havuz girdileri seçili değişkenleri iletebilir:
env[http_proxy] = http://203.0.113.10:8080
env[https_proxy] = http://203.0.113.10:8080
Yapılandırma değişikliklerini dağıtımınızın normal FPM yeniden yükleme prosedürüyle uygulayın. Değerleri uygulamaya gerçekten hizmet eden havuza koyun. Farklı bir havuz, hizmet hesabı veya konteyner, görünüşte doğru bir düzenlemenin neden etkisiz olduğunu açıklayabilir.
Canlı bir istekte hata ayıklarken yalnızca beklenen ayarların olup olmadığını kontrol edin. Tam ortam değerlerini yazdıran herkese açık bir tanılama sayfası, proxy kimlik bilgilerini ilgisiz sırlarla birlikte açığa çıkarabilir.
Ardından PHP taşımasını kontrol edin
libcurl belgelenmiş proxy ortamı işleyişine sahiptir; açık bir PHP cURL tanıtıcısının da kendi seçenekleri vardır. PHP'nin HTTP akış sarmalayıcısının ayrı bir bağlam yapılandırması vardır. Bir çalışana değişken sağlamak, her PHP ağ API'sinin bunları kullanmasını sağlamaz.
Bu, kullanışlı iki parçalı bir kontrol sunar: çalışanın ne aldığını doğrulayın, ardından seçilen HTTP istemcisinin proxy ayarlarını nasıl okuduğunu doğrulayın. CLI ve FPM aynı değerleri alıp yine de farklı davranıyorsa, sıradaki istemci seçeneklerini ve atlama kurallarını karşılaştırın. Kabuk profilini tekrar tekrar düzenlemek, çalışanın HTTP istemcisinin içindeki bir farkı çözemez.