PHP cURL curl_exec() Function



The PHP Client URL curl_exec() function is used to execute the given cURL session. This function must be called after you have initialized a cURL session and set all of its settings.

This function may return the Boolean false, but it can also return a non-Boolean value that evaluates to false. Use the === operator to test this function's return value.

Syntax

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

mixed curl_exec(resource $ch)

Parameters

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

Return Value

The curl_exec() function returns the fetched data as a string on success, or FALSE if an error occurs.

But if the CURLOPT_RETURNTRANSFER option is enabled, the result will be returned on success and FALSE on failure.

PHP Version

First introduced in core PHP 4.0.2, the curl_exec() 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_exec() function to execute the given URL to the browser.

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

   // set the URL and other options
   curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
   curl_setopt($ch, CURLOPT_HEADER, 0);
   
   // Get URL and send it to the browser
   curl_exec($ch);
   
   // Close the cURL resource to free up the resources
   curl_close($ch);

Output

The content will be displayed of the given URL −

curl_exec Output

Example 2

In the below PHP code we will try to use the curl_exec() function and execute the request to fetch data from a URL.

<?php
   // Initialize a cURL session
   $ch = curl_init('https://tutorialspoint.com/api/data');
   
   // Set cURL options if needed
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   
   // Execute the request
   $response = curl_exec($ch);
   
   // Check for errors
   if($response === false) {
       echo 'cURL Error: ' . curl_error($ch);
   }
   
   // Close cURL session
   curl_close($ch);
   echo $response;
?> 

Output

This will show the content of the given URL −

curl_exec Output

Example 3

Now we will use the curl_exec() function and call a rest api to get the repos of the github user.

<?php
   // GitHub username
   $username = 'abc'; // Replace with the GitHub username you want to fetch repositories for

   // API endpoint URL
   $url = "https://api.github.com/users/{$username}/repos";

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

   // Set options for sending a GET request
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   curl_setopt($ch, CURLOPT_HTTPHEADER, [
      'Accept: application/json',
      'User-Agent: Your-App-Name' // Replace with your own User-Agent header
   ]);

   // Execute the request
   $response = curl_exec($ch);

   // Check for errors
   if($response === false) {
      echo 'cURL Error: ' . curl_error($ch);
   } else {
      // Decode JSON response
      $data = json_decode($response, true);

      // Check if decoding was successful
      if($data === null) {
         echo 'Error decoding JSON';
      } else {
         // Process API response data
         echo 'GitHub Repositories:';
         foreach ($data as $repo) {
            echo '<br>';
            echo 'Name: ' . $repo['name'] ;
            echo '<br>';
            echo 'URL: ' . $repo['html_url'] . '<br>';
            echo '--------------------------';
         }
      }
   }

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

Output

This will create the below output −

GitHub Repositories:
Name: admin-dashboard
URL: https://github.com/abc/admin-dashboard
--------------------------
Name: b2brain-application
URL: https://github.com/abc/b2brain-application
--------------------------
Name: redux-github-repo
URL: https://github.com/abc/redux-github-repo
--------------------------
Name: responsive-portfolio
URL: https://github.com/abc/responsive-portfolio
--------------------------
Name: To-do-list
URL: https://github.com/abc/To-do-list
--------------------------

Important Note

When calling curl_exec() in PHP, response status codes like 404 (Not Found) are not considered failures. You can look for these status codes with curl_getinfo().

php_function_reference.htm
Advertisements