【ITニュース解説】php: a curl cheatsheet

2025年09月10日に「Dev.to」が公開したITニュース「php: a curl cheatsheet」について初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

ITニュース概要

PHPのcURLは外部WebサイトやAPIと通信する強力な機能だ。基本的なGETリクエストからPOSTでのデータ送信、ファイルのアップロード、認証、Cookieの操作まで、コピーして使える実践的なコード例を網羅的に解説している。(118文字)

出典: php: a curl cheatsheet | Dev.to公開日:

ITニュース解説

Webシステムを開発する上で、外部のサーバーとデータをやり取りする機能は不可欠である。例えば、天気予報サイトから最新の天気情報を取得したり、SNSのAPIを利用して投稿を自動化したり、オンラインストレージにファイルをアップロードしたりと、その用途は多岐にわたる。PHPには、こうしたサーバー間の通信を実現するための強力なライブラリ「cURL」が用意されている。cURLを使いこなすことで、さまざまなWebサービスとの連携が可能になる。

cURLを利用した通信処理は、基本的に4つのステップで構成される。まずcurl_init()関数で通信のためのセッションを開始し、ハンドルと呼ばれる識別子を取得する。次にcurl_setopt()関数を使い、このハンドルに対して通信先のURLや送信するデータ、その他の詳細な設定(オプション)を追加していく。設定が完了したら、curl_exec()関数で実際に通信を実行し、サーバーからの応答を受け取る。最後に、curl_close()関数でセッションを終了し、リソースを解放する。この一連の流れが、cURLを使ったプログラミングの基本形となる。

最も一般的な利用例は、特定のURLから情報を取得するGETリクエストである。これは、WebサイトのHTMLソースやAPIが提供するデータを取得する際に使用される。curl_init()の引数にURLを指定するか、CURLOPT_URLオプションで設定することで、通信対象を定義できる。curl_exec()は、デフォルトでは取得したデータを直接画面に出力してしまうため、変数として結果を扱いたい場合はCURLOPT_RETURNTRANSFERオプションをtrueに設定する必要がある。これにより、サーバーからの応答本文を文字列として受け取れるようになる。また、同じセッションハンドルを再利用して、異なるURLへ連続してリクエストを送ることも可能であり、効率的な処理が実現できる。

サーバーからの応答を正しく処理するためには、通信結果の詳細を把握することが重要だ。curl_getinfo()関数を使えば、通信後にHTTPステータスコードを取得できる。ステータスコードは通信の成否を示す3桁の数字で、例えば200なら成功、404ならリソースが見つからないことを意味する。これにより、成功時とエラー時で処理を分岐させることができる。また、そもそもサーバーに接続できないといったネットワークレベルの問題が発生した場合は、curl_errno()curl_error()でエラーの原因を特定できる。通常、サーバーが返す400番台以上のエラーはcURLのエラーとして検知されないが、CURLOPT_FAILONERRORtrueに設定することで、これらも通信エラーとして扱えるようになり、より厳密なエラーハンドリングが可能になる。

Web通信では、データ本体だけでなく、ヘッダーと呼ばれる付加情報も重要な役割を果たす。例えば、APIを利用する際に認証トークンを送ったり、送信するデータの形式を伝えたりする場合にヘッダーが使われる。リクエストに独自のヘッダーを追加するには、CURLOPT_HTTPHEADERオプションにヘッダー文字列の配列を指定する。逆に、サーバーからの応答ヘッダーを取得するには、CURLOPT_HEADERオプションをtrueに設定し、応答全体からヘッダー部分を切り出す処理が必要になる。また、IDとパスワードで保護されたページにアクセスするためのベーシック認証はCURLOPT_USERPWDで、ログイン状態を維持するためのCookieの送受信はCURLOPT_COOKIECURLOPT_COOKIEJARといったオプションで簡単に実装できる。

データの取得だけでなく、サーバーへデータを送信する処理もcURLの得意分野である。新しい情報を登録する際などには、POSTリクエストが用いられる。CURLOPT_POSTFIELDSオプションに送信したいデータを設定するだけで、cURLは自動的にリクエストメソッドをPOSTに切り替えてくれる。送信データがJSON形式の場合は、json_encode()で文字列に変換した上で、Content-Type: application/jsonヘッダーを忘れずに指定する必要がある。HTMLのフォームデータを送信する場合は、http_build_query()でデータをURLエンコード形式の文字列に変換して渡すのが一般的だ。データの更新(PUT)や削除(DELETE)といった他のHTTPメソッドを利用したい場合は、CURLOPT_CUSTOMREQUESTオプションで明示的に指定する。

さらに、cURLはファイルのダウンロードやアップロードにも対応している。大きなファイルをダウンロードする際は、CURLOPT_FILEオプションに書き込み先のファイルポインタを指定することで、サーバーからの応答を直接ファイルに保存できる。ファイルをアップロードする場合は、まずCURLFileクラスを使ってアップロードするファイルの情報をオブジェクトとして準備し、それをCURLOPT_POSTFIELDSに設定することで、マルチパート形式のデータとしてサーバーに送信できる。

このように、PHPのcURLは非常に多機能であり、その豊富なオプションを理解することで、Web上のあらゆるリソースと柔軟に連携するシステムを構築できる。最初は覚えることが多く複雑に感じるかもしれないが、基本的な使い方をマスターすれば、Web開発の可能性を大きく広げる強力な武器となるだろう。

【ITニュース解説】php: a curl cheatsheet | いっしー@Webエンジニア