SOCKS プロキシ用に Guzzle の cURL ハンドラを選ぶ
HTTP ストリーム専用のハンドラはプロキシ URL から SOCKS ネゴシエーションを得られません。実際の PHP ランタイムで対応するトランスポートを選んでください。
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 向けに公開エンドポイントの候補を提供します。
アプリケーションがすでにハンドラスタックを所有している場合は、置き換えてミドルウェアを失う前に、その背後のトランスポートを確認してください。PHP の HTTP ストリームに限定されたハンドラは、クライアントがこのオプションを受け取るというだけで SOCKS を実装できるわけではありません。
リクエストを実行するプロセスを確認してください。CLI の PHP と PHP-FPM は異なる設定ファイルや拡張を読み込むことがあり、一方に cURL があるからといって他方で利用できるとは限りません。