CURLOPT_PROXYPORT が cURL のプロキシ設定に加えるもの
独立したプロキシポート指定、CURLOPT_PROXY 内のポートとの優先関係、そして接続先に依然としてホストが必要な理由を解説します。
CURLOPT_PROXYPORT が与えるのはポート番号だけです。プロキシホストを特定せず、プロトコルを選ばず、ローカルマシン上にリスナーを作ることもありません。
新しい PHP cURL の設定は、接続先をひとまとまりのままにしておくと読みやすくなります。
curl_setopt($handle, CURLOPT_PROXY, 'http://proxy.example:3128');libcurl のドキュメントは独立したポート指定を推奨していません。既存のコードであれば、ポートを埋め込んでいないホストと組み合わせて使えます。
curl_setopt($handle, CURLOPT_PROXY, 'http://proxy.example');
curl_setopt($handle, CURLOPT_PROXYPORT, 3128);プロキシ文字列に明示されたポートは、独立した指定より優先されます。矛盾する 2 つの数値を保守しないようにしてください。
断片に CURLOPT_PROXYPORT しか現れない場合は、ハンドル設定の残りの部分と適用される環境を確認してください。断片だけでは、libcurl がどのプロキシホストを使うのか(使う場合)は分かりません。
ポート 3128 はよく使われる導入上の選択であり、プロトコルの判定手段ではありません。リスナーの実際のプロトコルとポートを使ってください。公開 HTTP 経路では、HTTP プロキシ一覧が、プロキシ URL の中でひとまとまりに保つべきアドレスとポートの候補を提供します。別のポートで到達できるプロキシを、例に合わせるためだけに移す必要はありません。