เลือก cURL handler ของ Guzzle สำหรับพร็อกซี SOCKS
handler ที่รองรับเฉพาะสตรีม HTTP ไม่สามารถรับการเจรจา SOCKS จาก URL พร็อกซีได้; เลือกทรานสปอร์ตที่รองรับในรันไทม์ PHP จริง
เมื่อเลือก handler ของไคลเอนต์ Guzzle อย่างตั้งใจ สแตกที่ใช้ cURL สามารถใช้ SOCKS ได้:
$stack = \GuzzleHttp\HandlerStack::create(
new \GuzzleHttp\Handler\CurlHandler()
);
$client = new \GuzzleHttp\Client([
'handler' => $stack,
'proxy' => 'socks5h://proxy.example.net:1080',
]);socks5h ขอให้พร็อกซีแปลงชื่อปลายทาง Guzzle ส่งปลายทางไปยัง libcurl ดังนั้นไบนารี libcurl ที่โหลดอยู่ต้องรองรับโปรโตคอลนั้น รายการพร็อกซี SOCKS5 มีผู้สมัครปลายทางสาธารณะสำหรับ URL พร็อกซีของไคลเอนต์
หากแอปพลิเคชันมีสแตกของ handler อยู่แล้ว ให้ตรวจสอบทรานสปอร์ตที่อยู่เบื้องหลังก่อนจะแทนที่และสูญเสียมิดเดิลแวร์ handler ที่จำกัดเฉพาะสตรีม HTTP ของ PHP ไม่สามารถทำ SOCKS ได้เพียงเพราะไคลเอนต์ได้รับตัวเลือกนี้
ตรวจสอบโพรเซสที่ส่งคำขอ CLI PHP และ PHP-FPM อาจโหลดไฟล์กำหนดค่าและส่วนขยายที่ต่างกัน การมี cURL ในตัวหนึ่งไม่ได้พิสูจน์ว่ามีในอีกตัวหนึ่ง