ทำไม PHP-FPM ถึงสูญเสียพร็อกซีที่ใช้งานได้ในเทอร์มินัลของคุณ
ติดตามการกำหนดค่าพร็อกซีไปยังเวิร์กเกอร์ PHP-FPM และแยกแยะสภาพแวดล้อมของพวกเขาจากบริบทสตรีมของ PHP
ไฟล์ PHP ไฟล์เดียวกันสามารถใช้พร็อกซีในเทอร์มินัลและเชื่อมต่อโดยตรงเมื่อ PHP-FPM ให้บริการ เริ่มจากการเปรียบเทียบโปรเซสที่รันไฟล์นั้น เทอร์มินัลของคุณเริ่ม PHP ด้วยสภาพแวดล้อมของเชลล์ เซิร์ฟเวอร์เว็บส่งคำขอไปยังเวิร์กเกอร์ที่ FPM สร้างไว้แล้ว
ดูสภาพแวดล้อมของเวิร์กเกอร์
การกำหนดค่าพูล FPM มี clear_env และรายการ env[NAME] ที่ชัดเจน เมื่อเปิดการล้างสภาพแวดล้อม การส่งออกตัวแปรในเชลล์ล็อกอินจะไม่ทำให้ตัวแปรนั้นอยู่ในเวิร์กเกอร์ รายการในพูลสามารถส่งตัวแปรที่เลือกได้:
env[http_proxy] = http://203.0.113.10:8080
env[https_proxy] = http://203.0.113.10:8080
ใช้การเปลี่ยนแปลงการกำหนดค่าผ่านขั้นตอนการโหลด FPM ใหม่ตามปกติของการติดตั้งใช้งานของคุณ ใส่ค่าในพูลที่ให้บริการแอปพลิเคชันจริงๆ พูล บัญชีบริการ หรือคอนเทนเนอร์อื่นอาจอธิบายได้ว่าทำไมการแก้ไขที่ดูเหมือนถูกต้องจึงไม่มีผล
เมื่อดีบักคำขอสด ให้ตรวจสอบเพียงว่ามีการตั้งค่าที่คาดไว้หรือไม่ หน้าวินิจฉัยสาธารณะที่พิมพ์ค่าสภาพแวดล้อมทั้งหมดอาจเปิดเผยข้อมูลรับรองพร็อกซีพร้อมกับความลับที่ไม่เกี่ยวข้อง
จากนั้นตรวจสอบการขนส่งของ PHP
libcurl มีการจัดการสภาพแวดล้อมพร็อกซีที่มีเอกสารกำกับ; แฮนเดิล PHP cURL ที่ชัดเจนก็มีตัวเลือกของตัวเองเช่นกัน HTTP stream wrapper ของ PHP มีการกำหนดค่าบริบทแยกต่างหาก การให้ตัวแปรแก่เวิร์กเกอร์ไม่ได้ทำให้ทุก API เครือข่ายของ PHP ใช้ตัวแปรเหล่านั้น
สิ่งนี้ให้การตรวจสอบสองส่วนที่เป็นประโยชน์: ยืนยันว่าเวิร์กเกอร์ได้รับอะไร จากนั้นยืนยันว่าไคลเอนต์ HTTP ที่เลือกอ่านการตั้งค่าพร็อกซีอย่างไร หาก CLI และ FPM ได้รับค่าเดียวกันแต่ยังทำงานต่างกัน ให้เปรียบเทียบตัวเลือกไคลเอนต์และกฎการข้ามในลำดับถัดไป การแก้ไขโปรไฟล์เชลล์ซ้ำๆ ไม่สามารถแก้ความแตกต่างภายในไคลเอนต์ HTTP ของเวิร์กเกอร์ได้