curlコマンドをPHP cURLに変換

curlコマンドをPHP cURLコードに変換する方法を解説。curl_init、curl_setopt、curl_execを使ったGET、POST、認証、ファイルアップロードのパターンを学びましょう。

PHP

詳細な説明

curlからPHP cURLへの変換

PHPは ext-curl 拡張モジュールを通じてcURLをネイティブサポートしており、コマンドラインのcurlからPHPコードへの直接的なマッピングが可能です。PHP cURL APIは、基盤となるlibcurlライブラリを反映しています。

GETリクエスト

curl:

curl https://api.example.com/users

PHP:

$ch = curl_init("https://api.example.com/users");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);

JSONを使ったPOST

curl:

curl -X POST https://api.example.com/users \
  -H "Content-Type: application/json" \
  -d '{"name": "Alice"}'

PHP:

$ch = curl_init("https://api.example.com/users");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => ["Content-Type: application/json"],
    CURLOPT_POSTFIELDS => json_encode(["name" => "Alice"]),
]);
$response = curl_exec($ch);
curl_close($ch);

認証

curl:

curl -u user:pass https://api.example.com/data

PHP:

curl_setopt($ch, CURLOPT_USERPWD, "user:pass");

エラーハンドリング

本番コードでは必ずcURLエラーをチェックしましょう:

$response = curl_exec($ch);
if (curl_errno($ch)) {
    throw new Exception("cURL error: " . curl_error($ch));
}
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

主なオプション対応表

curlフラグ PHP定数
-L CURLOPT_FOLLOWLOCATION
-k CURLOPT_SSL_VERIFYPEER => false
--timeout CURLOPT_TIMEOUT
-x proxy CURLOPT_PROXY
-o file CURLOPT_FILE
-H CURLOPT_HTTPHEADER

モダンPHPの代替手段

新しいプロジェクトでは、Python requestsに似た高レベルAPIを提供するGuzzle HTTPクライアントの使用を検討してください。ただし、組み込みのcURL拡張モジュールは、PHPホスティング環境で最も広く利用可能なオプションであり続けています。

ユースケース

WordPressプラグインやLaravelアプリケーションを開発するPHP開発者が、APIドキュメントに記載されたcurlサンプルを使って外部APIにHTTPリクエストを送信する必要がある場合に使用します。

Try It — Curl to Code Converter

フルツールを開く