Hướng dẫn dùng curl error trong PHP

cURL là gì? Nếu bạn thật sự muốn tìm hiểu về cURL thì bài viết này, Vietnix sẽ giúp bạn tìm hiểu một cách rõ nét và dễ hiểu. Cùng với một số ví dụ cụ thể về cURL có thể hỗ trợ bạn trong quá trình tìm hiểu cũng như thực hiên một số thao tác cơ bản.

cURL viết tắt của client URL, là một công cụ dòng lệnh (command line) mà các nhà phát triển sử dụng để truyền dữ liệu data đến và đi từ server. Về cơ bản, cURL cho phép bạn nói chuyện với server bằng cách chỉ định vị trí (dưới dạng URL) và dữ liệu data bạn muốn gửi.

Hướng dẫn dùng curl error trong PHP
cURL là gì?

cURL hỗ trợ một số giao thức khác nhau, bao gồm HTTP và HTTPS và chạy trên hầu hết mọi nền tảng. Điều này làm cho cURL trở nên lý tưởng để kiểm tra giao tiếp từ hầu hết mọi thiết bị (miễn là nó có dòng lệnh và kết nối network) từ local server đến hầu hết các thiết bị.

Ví dụ: Bạn có thể sử dụng cURL cho việc xác thực user, HTTP post, kết nối SSL, hỗ trợ proxy, tải FTP và nhiều hơn thế nữa. Bạn cũng có thể làm những việc đơn giản với cURL, chẳng hạn như tải xuống các trang web và hình ảnh web.

Chúng ta hãy cùng xem tiếp để tìm hiểu xem chúng ta có nên sử dụng cURL hay không và nếu có, các trường hợp sử dụng phổ biến là gì?

Lịch sử của cURL

Tìm hiểu rõ hơn cURL là gì, bạn nên tham khảo qua về lịch sử của cURL để nắm được nhiều thông tin cặn kẽ hơn về nó.

Quay trở lại thời kỳ những năm 90 khi mọi người vẫn sử dụng các công cụ dòng lệnh, Daniel Sterberg muốn phát triển một IRC script đơn giản có thể chuyển đổi tiền tệ cho các thành viên trong phòng chat room. Vào năm 1997, không có nhiều lựa chọn để xây dựng nền tảng cho việc phân phối dữ liệu data qua giao thức internet. Do đó, Httpget xuất hiện và sử dụng khoảng vài trăm dòng code để truyền dữ liệu dựa trên HTTP. Nó đã trở thành nguồn gốc của cURL và được đặt tên là HTTPGET 1.0.

Hướng dẫn dùng curl error trong PHP
Đôi nét về cURL mà bạn nền tham khảo

Nhiều tháng sau, FTP support đã được phát triển và tên này đã bị loại bỏ. Bây giờ nó được gọi là urlget 2.0. Sau một vài bản cập nhật, vào ngày 30 tháng 3 năm 1998, tên này một lần nữa được thay đổi thành cURL 3.0 và được nhiều người biết đến.

Giao thức được hỗ trợ trong cURL Command

cURL Command có thể hỗ trợ các giao thức (protocol) sau: HTTP, HTTPS, IMAP, IMAPS, SMB, MBS, SFTP, GOPHER, LDAP, LDAPS, SCP, FTP, FTPS, TELNET, POP3, POP3S, SMTP, SMTPS. 

cURL có nhiều giao thức được hỗ trợ khác nhau. Tuy nhiên, cURL sẽ sử dụng giao thức HTTP theo mặc định nếu không có giao thức nào được cung cấp. Chẳng hạn như nếu bạn chạy ví dụ sau, nó sẽ tải xuống trang chủ của example.com.

curl example.com

Bạn có thể gọi một giao thức cụ thể bằng cách đặt trước URL bằng tên giao thức.

curl http://example.com

Ví dụ trên sử dụng giao thức HTTP. Nếu bạn muốn sử dụng một giao thức khác, hãy chuyển HTTP thành một giao thức khác. Ví dụ: nếu bạn muốn sử dụng giao thức FTP, nó sẽ trông như thế này:

curl ftp://example.com

cURL cũng sẽ thử các giao thức khác nhau nếu giao thức mặc định không hoạt động. Nếu bạn đưa ra gợi ý, cURL có thể đoán bạn muốn sử dụng giao thức nào.

Ví dụ: Nếu bạn viết command sau, cURL sẽ có thể đoán một cách thông minh rằng bạn muốn sử dụng giao thức FTP: //.

curl ftp.example.com

Dưới đây là danh sách các giao thức được hỗ trợ cURL:

DICT FILE  FTP
FTP FTPS GOPHER HTTP
HTTPS IMAP IMAPS
LDAP POP3 RTMP
RTSP SCP SFTP
SMB SMBS TELNET
TFTP

Chức năng của cURL

Chức năng của cURL là giúp người dùng tải xuống một trang web hoặc hình ảnh trên mạng Internet. Ngoài ra, nó cũng hỗ trợ người dùng vận chuyển tập tin, dữ liệu, hình ảnh, hoặc truyền dữ liệu đến và đi từ server. Bên cạnh đó, cURL cho phép bạn kiểm tra Cookie được tải trên URL.

Tại sao bạn nên sử dụng cURL?

Tại sao bạn nên sử dụng cURL? Hãy xem xét những lợi ích của phần mềm này:

  • Có tính linh động cao.
  • Nó tương thích với hầu hết mọi hệ điều hành và thiết bị được kết nối.
  • Rất hữu ích trong việc kiểm tra endpoint, xem chúng có hoạt động hay không.
  • Nó có thể dài dòng, nhưng cung cấp chi tiết chính xác những gì đã được gửi hoặc nhận, rất hữu ích cho việc tìm và khắc phục lỗi.
  • Khả năng error logging tốt.
  • Có thể được giới hạn tỷ lệ.

Cách sử dụng cURL trong PHP cơ bản

Để sử dụng cURL trong PHP cơ bản bằng cách sử dụng XAMPP, WAMP, MAMP thì bạn không cần cài đặt thêm libcurl trong PHP vì nó đã được tích hợp sẵn trong các phần mềm này. Các bước cơ bản để sử dụng cURL gồm:

  • Bước 1: Hàm khởi tạo cURL.
  • Bước 2: Thiết lập các tùy chọn request.
  • Bước 3: Hàm thực thi cURL.
  • Bước 4: Đóng Request và giải phóng tài nguyên.

Chúng ta cùng thực hiện các bước được mô tả chi tiết dưới đây.

Bước 1: Hàm khởi tạo cURL 

Để khởi tạo cURL bạn thực hiện hàm như sau:

curl init()

Thiết lập tùy chọn request

Để thiết lập tùy chọn request bạn thực hiện hàm sau:

curl_setopt()

Đây là một hàm quan trọng trong cURL có nhiệm vụ để xử lý các dữ liêu được input như: giao thức HTTP, content-type, cookie, charset,… Và lưu ý đặt hàm curl_setopt() trước hàm curl_exec() thì mới đúng và có tác dụng.

curl_setopt() gồm 3 tham số sau:

  • Tham số thứ 1: cURL.
  • Tham số thứ 2: Tên cấu hình.
  • Tham số thứ 3: Giá trị cấu hình

Các tham số cách với nhau bằng dấu (,). Có thể xem ví dụ cụ thể dưới đây:

curl_setopt($curl, CURLOPT_URL, "https://vietnix.vn");

Ngoài ra, bạn thể thiết lập nhiều tùy chọn cùng một lúc bằng hàm curl_setopt_array(). Cấu trúc của nó sẽ có dạng như sau:

curl_setopt_array($curl, array(
  CURLOPT_RETURNTRANSFER => 1,
  CURLOPT_URL => 'https://vietnix.vn/',
  CURLOPT_USERAGENT => 'Exmaple POST',
  CURLOPT_POST => 1,
  CURLOPT_POSTFIELDS => $data
));
curl_setopt_array($curl, $options);

Trong đó, một số tên cấu hình phổ biến được sử dụng như:

  • CURLOPT_URL: Đường dẫn URL mà cURL gửi request.
  • CURLOPT_RETURNTRANSFER: TRUE thì kết quả trả về là hàm curl_exectheo dạng chuỗi, còn nếu FALSE thì kết quả được xuất lên trình duyệt.
  • CURLOPT_TIMEOUT: Thời gian duy trì kết nối của cURL.
  • CURLOPT_USERAGENT: Giả lập trình duyệt đang gửi dữ liệu user agent.
  • CURLOPT_FILE: Lưu kết quả vào file.
  • CURLOPT_POST: TRUE thì dữ liệu gửi về dưới dạng POST.
  • CURL_POSTFIELDS: Mảng dữ liệu.

Xem thêm: User Agent là gì? Cách thay đổi UA trên Chrome, Safari, Firefox và Microsoft Edge

Hàm thực thi cURL

Thực thi cURL, bạn sủ dụng hàm như sau:

curl_exec()

Bước ở trên bạn thực hiện hàm “curl_setopt($curl, CURLOPT_URL, "https://vietnix.vn");” nếu kết quả là TRUE thì kết quả trả về một chuỗi kết quả hàm curl_exec().

curl_setopt($curl, CURLOPT_URL, "https://vietnix.vn");

Đóng request, giải phóng tài nguyên

Cuối cùng là đóng request thì bạn sử dụng hàm sau. Thao tác này giúp bạn tiết kiệm tài nguyên và nâng cao hiệu suất cho server.

curl_close()

Các lệnh cần biết của cURL trong Linux

Một số lệnh cơ bản được sử dụng dụng phổ biến của cURL trong Linux

Hướng dẫn dùng curl error trong PHP
Các lệnh phổ biến cURL trong Linux

Lệnh kiểm tra phiên bản cURL

Trước khi sử dụng lệnh này, bạn phải đảm bảo cURL được cài đặt vào hệ thống bằng cách đăng nhập VPS:

curl --version

Kết quả version đucợ trả về trên máy và bạn có thể biết được các giao thức mà cURL được hỗ trợ.

Dùng cURL Command để tải file

Để tải file bạn có thể dùng lệnh sau:

curl -o newyourfile.tar.gz http://example.com/yourfile.tar.gz

Thì file của bạn sẽ được lưu lại với tên newyourfile.tar.gz. Ngoài ra, bạn có thể tải cùng lúc nhiều file với lệnh:

curl -O http://example.com/yourfile.tar.gz -O http://example1.com/myfile.tar.gz

Lệnh HTTP cURL Command

Dưới đây là minh họa một chức năng của cURL sử dụng như một server proxy để tải file.

curl -x sampleproxy.com:8090 -U username:password -O http://testdomain.com/testfile.tar.gz

Lệnh cURL kiểm tra Cookies

Bạn có thể kiểm tra Cookie nào được tải trên URL bằng cách sử dụng cURL Command

curl --cookie-jar Mycookies.txt https://example/index.html -O

Bên cạnh đó, bạn có thể upload cookie có sẵn lên website với lệnh:

curl --cookie Mycookies.txt https://www.example.com

Lệnh cURL cho FTP

  • cURL hỗ trợ giao thức FTP nên có thể tải file một máy chủ từ xa với lệnh như sau:
curl -u username:password -O ftp://nameftpserver/yourfile.tar.gz
  • Upload file lên FTP:
curl -u username:password -T yourfile.tar.gz ftp://nameftpserver

Lệnh giới hạn output của cURL

Giới hạn output để hạn chế tình trạng sử dụng băng thông lớn gây ra việc download chậm

curl --limit-rate 100K http://testdomain.com/samplefile.tar.gz -O

Gửi biểu mẫu với cURL

cURL cũng có thể sử dụng phương thức POST của HTTP để gửi biểu mẫu. Để thực hiện gửi biểu mẫu , bạn cần tạo 2 tệp sau:

  • index.php: Để đặt tệp lệnh cURL.
  • form.php: Để đặt biểu mẫu cần gửi.

Có thể xem mẫu ví dụ dưới đây:


 


Sử dụng cURL để xác thực HTTP

Bạn sủ dụng lệnh sau để xác thực HTTP:

curl_setopt_array($handle,
  array(
    CURLOPT_URL => $url,
   CURLOPT_HTTPAUTH => CURLAUTH_ANY,
   CURLOPT_USERPWD  => "$username:$password",
   CURLOPT_RETURNTRANSFER   => true,
  )
);

Lời kết

cURL là gì? Qua bài viết này chắc bạn cũng nắm được nhiều thông tin hay về cURL, đây là một cộng cụ cực kỳ mạnh mẽ và đang ngày càng phát triển mạnh mẽ hơn. Mong sau bài viết này, sẽ giúp bạn có thêm nhiều kiến thức hơn và sử dụng công cụ được hiệu quả tốt. Chúc các bạn thành công.