Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

PHP cURL curl_error() Function



The PHP Client URL curl_error() function is used to get a string containing the last error for the cURL session.

Syntax

Below is the syntax of the PHP cURL curl_error() function −

string curl_error ( resource $ch )

Parameters

This function accepts $ch parameter which is the cURL handle resource returned by curl_init().

Return Value

The curl_error() function returns the error message string in the event that there was an error during the most recent cURL operation, or an empty string ("").

PHP Version

First introduced in core PHP 4.0.3, the curl_error() function continues to function easily in PHP 5, PHP 7, and PHP 8.

Example 1

First we will show you the basic example of the PHP cURL curl_error() function which is to find the error if there is no resource provided.

<?php
   // Create a new cURL resource
   $ch = curl_init();

   // Set options and perform cURL session
   $result = curl_exec($ch);
   
   if($result === false) {
       echo "cURL Error: " . curl_error($ch);
   }
   
   curl_close($ch);

Output

Here is the outcome of the following code −

cURL Error: No URL set

Example 2

In this example, we will use the curl_error() method to look for errors after initiating a cURL session to get data from an API. The error message will be displayed when curl_exec($ch) fails.

<?php
   // Initialize cURL session
   $ch = curl_init("https://404-web-site.com/api");

   // Set cURL options
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

   // Execute cURL session
   $result = curl_exec($ch);

   // Check for errors
   if ($result === false) {
      echo "cURL Error: " . curl_error($ch);
   } else {
      echo "Response: " . $result;
   }

   // Close cURL session
   curl_close($ch);
?> 

Output

This will produce the following output −

cURL Error: Could not resolve host: 404-web-site.com

Example 3

In the below PHP code we will try to copy the URL using the curl_error() function and modify the original URL and display the data from all the URLs.

<?php
   // URL and POST data
   $url = "https://jsonplaceholder.typicode.com/posts";
   $data = [
      'key1' => 'value1',
      'key2' => 'value2'
   ];

   // Initialize cURL session
   $ch = curl_init($url);

   // Set cURL options for POST request
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   curl_setopt($ch, CURLOPT_POST, true);
   curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

   // Execute cURL session
   $result = curl_exec($ch);

   // Check for errors
   if ($result === false) {
      echo "cURL Error: " . curl_error($ch);
   } else {
      echo "Response: " . $result;
   }

   // Close cURL session
   curl_close($ch);
?> 

Output

This will generate the below output −

Response: {
  "key1": "value1",
  "key2": "value2",
  "id": 101
}

Example 4

This example shows how to start multiple cURL sessions to be able get data from multiple URLs at the same time. After the execution of the sessions, curl_error($ch) is used in a loop to check each cURL handle for problems.

   // Create an array of URLs
   $urls = [
      "https://jsonplaceholder.typicode.com/posts/1",
      "https://jsonplaceholder.typicode.com/posts/2"
   ];

   // Initialize an array to store cURL 
   $handles = [];

   // Initialize cURL sessions
   foreach ($urls as $url) {
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      $handles[] = $ch;
   }

   // Execute all cURL sessions
   $multihandle = curl_multi_init();
   foreach ($handles as $ch) {
      curl_multi_add_handle($multihandle, $ch);
   }

   $running = null;
   do {
      curl_multi_exec($multihandle, $running);
   } while ($running);

   // Check for errors in each cURL handle
   foreach ($handles as $ch) {
      if (curl_errno($ch)) {
         echo "cURL Error for handle: " . curl_error($ch) . "\n";
      } else {
         // Process successful response
         $response = curl_multi_getcontent($ch);
         echo "Response: " . $response . "\n";
      }
      curl_multi_remove_handle($multihandle, $ch);
      curl_close($ch);
   }

   // Close multi-handle
   curl_multi_close($multihandle);

Output

This will create the following result −

Response: {
  "userId": 1,
  "id": 1,
  "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}
Response: {
  "userId": 1,
  "id": 2,
  "title": "qui est esse",
  "body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
}

Summary

The curl_error() method is a built-in function to check for any errors after executing the giving request. It is very helpful for managing errors and debugging when creating an API connection or when we are getting remote data.

php_function_reference.htm
Advertisements