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リクエストを送信する必要がある場合に使用します。