執行 curl_exec() 後,使用 curl_getinfo($ch, CURLINFO_HTTP_CODE) 即可獲取 HTTP 響應狀態碼。
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://www.example.com');
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HEADER, false); // 不在輸出中包含響應頭
curl_setopt($ch, CURLOPT_NOBODY, false); // 包含響應體
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 返回字符串而非直接輸出
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 自動跟隨重定向
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 僅測試環境關閉 SSL 驗證
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo "HTTP 狀態碼: $httpCode\n";
echo "響應內容長度: " . strlen($response) . "\n";
curl_close($ch);
?>
| 常量 | 說明 |
|---|---|
| CURLINFO_HTTP_CODE | HTTP 響應狀態碼(如 200, 301, 404, 500) |
| CURLINFO_TOTAL_TIME | 總耗時(秒) |
| CURLINFO_CONNECT_TIME | 建立連接耗時 |
| CURLINFO_PRETRANSFER_TIME | 傳輸開始前耗時 |
| CURLINFO_SIZE_DOWNLOAD | 下載字節數 |
| CURLINFO_SPEED_DOWNLOAD | 平均下載速度(bytes/s) |
| CURLINFO_CONTENT_TYPE | 響應 Content-Type |
| CURLINFO_REDIRECT_COUNT | 重定向次數 |
| CURLINFO_EFFECTIVE_URL | 最終有效 URL(跟隨重定向後) |
CURLOPT_TIMEOUT:最大執行時間(秒)CURLOPT_CONNECTTIMEOUT:連接超時時間(秒)CURLOPT_FOLLOWLOCATION:是否跟隨重定向CURLOPT_MAXREDIRS:最大重定向次數CURLOPT_SSL_VERIFYPEER:驗證 SSL 證書(生產環境必須為 1)CURLOPT_SSL_VERIFYHOST:驗證 SSL 證書中的域名CURLOPT_URL:請求地址CURLOPT_USERAGENT:User-Agent 標識CURLOPT_REFERER:Referer 頭CURLOPT_COOKIE / CURLOPT_COOKIEFILE / CURLOPT_COOKIEJAR:Cookie 處理CURLOPT_POSTFIELDS:POST 數據(數組自動編碼為 multipart/form-data)CURLOPT_HTTPHEADER:自定義請求頭數組CURLOPT_NOBODY = true(發送 HEAD 請求),配合 CURLOPT_HEADER = true 獲取完整響應頭。curl_errno($ch) 獲取錯誤碼,curl_error($ch) 獲取錯誤信息。curl_multi_* 系列函數實現並發。CURLOPT_FORBID_REUSE = false(默認)復用連接,提升性能。掌握 cURL 狀態碼獲取與常用選項,能讓你輕鬆應對 API 對接、網頁抓取、健康檢查等場景。