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 があるからといって他方で利用できるとは限りません。

関連記事