PHP - 客戶端 URL 函式



PHP 的 cURL 或客戶端 URL 函式用於傳送 HTTP 請求並與 Web 伺服器互動。它們允許您與多種型別的伺服器通訊,並使用各種協議(例如 HTTP、HTTPS、FTP 等)傳送和接收資料。

這些函式對於管理響應和向 Web 傳送請求的 PHP 程式至關重要。在與 API 互動、下載檔案和抓取 Web 時,它們尤其方便。

構成 cURL 的兩個部分是 libcURL 和 cURL。

  • cURL:cURL 允許您使用 URL 語法傳送和接收資料。
  • libcURL:這是一個庫。它由 Daniel Stenberg 建立。cURL 庫能夠使用多種協議與其他伺服器通訊。目前,它支援各種協議,包括 LDAP、TPS、GOPHER、FTP、HTTP、HTTPS、FILE、HTTP POST、TELNET、DICT、HTTP PUT、FTP 上傳、FTP 恢復、Kerberos、基於 HTTP 的上傳、TTPS 證書、代理、Cookie、HTTP 代理隧道、使用者和密碼身份驗證等。

安裝

要使用 PHP 的 cURL 功能,您還需要使用 --with-curl[=DIR] 編譯 PHP。包含 lib 和 include 資料夾的目錄稱為 DIR。curl 資料夾(需要存在於 include 目錄中)是您應該找到 easy.h 和 curl.h 檔案的地方。lib 目錄中應該有一個名為 libcurl.a 的檔案。

要求

要在 PHP 中使用 cURL 函式,必須安裝 libcurl 庫。

  • 任何版本的 PHP 都需要 libcurl 至少為 7.10.5 版。
  • PHP 7.3.0 或更高版本需要 libcurl 7.15.5 或更高版本。
  • 要與 PHP 8.0.0 或更高版本一起使用,libcurl 必須為 7.29.0 或更高版本。

執行時配置

php.ini 檔案中有一些設定可以修改 cURL 的工作方式。

PHP cURL 常量

PHP cURL 常量是有用的預定義值,您可以使用它們來設定設定和獲取資料。以下是一些常用常量

CURLOPT 常量

以下常量和 Curl_setopt() 用於為 cURL 會話設定選項

序號 常量和描述 PHP 版本
1 CURLOPT_URL

要獲取的 URL。

3
2 CURLOPT_RETURNTRANSFER

如果設定為 true,則響應將作為字串返回,而不是直接輸出。

4
3 CURLOPT_POST

如果設定為 true,則發出 POST 請求。

4
4 CURLOPT_POSTFIELDS

在 POST 請求中傳送的資料。

4
5 CURLOPT_FOLLOWLOCATION

如果設定為 true,則遵循伺服器傳送的任何“Location:”標頭。

4
6 CURLOPT_TIMEOUT

允許 cURL 函式執行的最大秒數。

4
7 CURLOPT_SSL_VERIFYPEER

如果設定為 false,則阻止 cURL 驗證對等方的證書。

4
8 CURLOPT_CAINFO

證書頒發機構 (CA) 捆綁包的路徑。

4

CURLINFO 常量

使用 curl_getinfo() 和以下常量,您可以獲取有關 cURL 會話的資訊

序號 常量和描述 PHP 版本
1 CURLINFO_HTTP_CODE

HTTP 響應程式碼。

4
2 CURLINFO_CONTENT_TYPE

響應的內容型別。

4
3 CURLINFO_TOTAL_TIME

上次傳輸的總時間。

4

CURL 錯誤常量

curl_errno() 和 curl_error() 與以下常量一起使用以處理錯誤

序號 常量和描述 PHP 版本
1 CURLE_OK

沒有錯誤。

4
2 CURLE_UNSUPPORTED_PROTOCOL

您傳遞給 cURL 的 URL 使用了此 libcurl 不支援的協議。

4
3 CURLE_FAILED_INIT

非常早期的初始化程式碼失敗。

4
4 CURLE_URL_MALFORMAT

URL 格式不正確。

4
5 CURLE_COULDNT_RESOLVE_HOST

無法解析主機。給定的遠端主機未解析。

4

函式列表

以下是一些常用的 PHP cURL 函式

序號 函式和描述 PHP 版本
1 curl_close

關閉 cURL 會話

4.0.2
2 curl_copy_handle

複製 cURL 控制代碼及其所有首選項

5
3 curl_errno

返回最後一個錯誤號

4.0.3
4 curl_error

返回一個包含當前會話的最後一個錯誤的字串

4.0.3
5 curl_escape

對給定字串進行 URL 編碼

5.5.0
6 curl_exec

執行 cURL 會話

4.0.2
7 curl_getinfo

獲取有關特定傳輸的資訊

4.0.4
8 curl_init

初始化 cURL 會話

4.0.2
9 curl_multi_add_handle

將普通 cURL 控制代碼新增到 cURL 多控制代碼

5
10 curl_multi_close

關閉一組 cURL 控制代碼

5
11 curl_multi_errno

返回最後一個多 cURL 錯誤號

7.1.0
12 curl_multi_exec

運行當前 cURL 控制代碼的子連線

5
13 curl_multi_getcontent

如果設定了 CURLOPT_RETURNTRANSFER,則返回 cURL 控制代碼的內容

5
14 curl_multi_info_read

獲取有關當前傳輸的資訊

5
15 curl_multi_init

返回一個新的 cURL 多控制代碼

5
16 curl_multi_remove_handle

從一組 cURL 控制代碼中刪除多控制代碼

5
17 curl_multi_select

等待任何 curl_multi 連線上的活動

5
18 curl_multi_setopt

設定 cURL 多選項

5.5.0
19 curl_multi_strerror

返回描述錯誤程式碼的字串

5.5.0
20 curl_pause

暫停和取消暫停連線

5.5.0
21 curl_reset

重置 libcurl 會話控制代碼的所有選項

5.5.0
22 curl_setopt_array

為 cURL 傳輸設定多個選項

5.1.3
23 curl_setopt

為 cURL 傳輸設定選項

4.0.2
24 curl_share_close

關閉 cURL 共享控制代碼

5.5.0
25 curl_share_errno

返回上一個共享curl錯誤號

7.1.0
26 curl_share_init

初始化一個cURL共享控制代碼

5.5.0
27 curl_share_setopt

為cURL共享控制代碼設定選項

5.5.0
28 curl_share_strerror

返回描述給定錯誤程式碼的字串

7.1.0
29 curl_strerror

返回描述給定錯誤程式碼的字串

5.5.0
30 curl_unescape

解碼給定的URL編碼字串

5.5.0
31 curl_upkeep

執行任何連線維護檢查

8.2.0
32 curl_version

獲取cURL版本資訊

4.0.2

使用案例

這些函式是PHP程式管理響應並向Web傳送請求所必需的。在與API互動、下載檔案和抓取網頁時,它們非常有用。

php_function_reference.htm
廣告