Convertir une commande cURL en PHP : guide complet 2026

Apprenez à transformer vos commandes cURL en code PHP natif ou Guzzle. Méthode, exemples concrets GET/POST/Auth et outil de conversion automatique gratuit.

Pourquoi convertir cURL en PHP ?

Quand on développe une intégration avec une API tierce, la documentation fournit presque toujours des exemples sous forme de commandes cURL. C'est pratique pour tester dans un terminal, mais dès qu'il s'agit d'intégrer l'appel dans une application PHP, il faut traduire manuellement chaque option — méthode HTTP, en-têtes, corps de la requête, authentification, timeout, etc.

Cette traduction est répétitive et source d'erreurs : oublier CURLOPT_RETURNTRANSFER, mal gérer l'encodage du body JSON, confondre CURLOPT_POST et CURLOPT_CUSTOMREQUEST... Notre convertisseur automatise cette étape et génère un code PHP propre en un clic.

💡 Conversion instantanée : Utilisez notre 🔄 Convertisseur cURL → PHP pour obtenir votre code PHP (cURL natif ou Guzzle) en quelques secondes.

Anatomie d'une commande cURL

Avant de convertir, il est utile de comprendre ce que chaque flag cURL signifie :

Option cURLRôleÉquivalent PHP
-X POSTMéthode HTTPCURLOPT_CUSTOMREQUEST
-H 'Clé: Valeur'En-tête HTTPCURLOPT_HTTPHEADER
-d '{...}'Corps de la requêteCURLOPT_POSTFIELDS
-u user:passAuthentification BasicCURLOPT_USERPWD
-LSuivre les redirectionsCURLOPT_FOLLOWLOCATION
-kIgnorer le certificat SSLCURLOPT_SSL_VERIFYPEER => false
--max-time 30Timeout en secondesCURLOPT_TIMEOUT
-A 'Agent'User-AgentCURLOPT_USERAGENT
-b 'cookie=val'CookiesCURLOPT_COOKIE
--compressedDécompression gzipCURLOPT_ENCODING => ''

Exemple 1 : requête GET avec en-tête d'authentification

Commande cURL

curl -X GET "https://api.exemple.com/users/42" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.TOKEN"

Code PHP cURL natif équivalent

<?php
$url = 'https://api.exemple.com/users/42';

$headers = [
    'Accept: application/json',
    'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.TOKEN',
];

$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL            => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'GET',
    CURLOPT_HTTPHEADER     => $headers,
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if (curl_errno($ch)) {
    throw new Exception('Erreur cURL : ' . curl_error($ch));
}

curl_close($ch);

$data = json_decode($response, true);
var_dump($data);

Notez l'utilisation de curl_setopt_array() plutôt que plusieurs appels curl_setopt() séparés : c'est plus lisible et marginalement plus performant.

Exemple 2 : requête POST avec un body JSON

C'est le cas le plus courant lors d'intégrations avec des APIs REST modernes (Stripe, SendGrid, OpenAI, etc.).

Commande cURL

curl -X POST "https://api.exemple.com/articles" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer TOKEN" \
  -d '{"titre": "Mon article", "publie": true}'

Code PHP cURL natif

<?php
$url  = 'https://api.exemple.com/articles';
$body = json_encode([
    'titre'  => 'Mon article',
    'publie' => true,
]);

$headers = [
    'Content-Type: application/json',
    'Authorization: Bearer TOKEN',
];

$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL            => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'POST',
    CURLOPT_HTTPHEADER     => $headers,
    CURLOPT_POSTFIELDS     => $body,
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
var_dump($data);

Avec Guzzle

<?php
require_once 'vendor/autoload.php';
use GuzzleHttp\Client;

$client = new Client();

$response = $client->request('POST', 'https://api.exemple.com/articles', [
    'headers' => [
        'Authorization' => 'Bearer TOKEN',
    ],
    'json' => [
        'titre'  => 'Mon article',
        'publie' => true,
    ],
]);

$data = json_decode($response->getBody()->getContents(), true);
var_dump($data);

L'option 'json' de Guzzle pose automatiquement le header Content-Type: application/json et sérialise le tableau PHP — aucun json_encode() manuel nécessaire.

Exemple 3 : formulaire POST (application/x-www-form-urlencoded)

Commande cURL

curl -X POST "https://exemple.com/login" \
  -d "username=admin&password=secret123"

Code PHP

<?php
$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL            => 'https://exemple.com/login',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'POST',
    CURLOPT_POSTFIELDS     => 'username=admin&password=secret123',
    CURLOPT_HTTPHEADER     => ['Content-Type: application/x-www-form-urlencoded'],
]);
$response = curl_exec($ch);
curl_close($ch);

Si vous préférez passer un tableau associatif à CURLOPT_POSTFIELDS, PHP l'encodera automatiquement en multipart/form-data — différent du application/x-www-form-urlencoded. Pour forcer ce dernier format, passez toujours une chaîne de caractères.

Exemple 4 : authentification Basic (-u)

Commande cURL

curl -X GET "https://api.exemple.com/donnees" \
  -u "utilisateur:motdepasse"

Code PHP

<?php
$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL            => 'https://api.exemple.com/donnees',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'GET',
    CURLOPT_USERPWD        => 'utilisateur:motdepasse',
]);
$response = curl_exec($ch);
curl_close($ch);

PHP traduit CURLOPT_USERPWD en header Authorization: Basic <base64> automatiquement. Vous pouvez aussi le faire manuellement avec base64_encode('user:pass') si vous préférez garder le contrôle explicite.

Bonnes pratiques PHP pour les requêtes HTTP

1. Toujours vérifier les erreurs cURL

<?php
$response = curl_exec($ch);
if (curl_errno($ch)) {
    $erreur = curl_error($ch);
    curl_close($ch);
    throw new RuntimeException('Erreur cURL : ' . $erreur);
}
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode >= 400) {
    throw new RuntimeException("L'API a répondu avec le code HTTP $httpCode");
}

2. Ne jamais désactiver SSL en production

L'option -k (ou CURLOPT_SSL_VERIFYPEER => false) désactive la vérification du certificat SSL. Elle peut dépanner en développement local, mais elle ouvre la porte aux attaques man-in-the-middle en production. La bonne solution si vous avez des problèmes SSL est de mettre à jour le bundle de certificats CA :

<?php
// Bonne pratique : pointer vers le bundle CA à jour
curl_setopt($ch, CURLOPT_CAINFO, '/chemin/vers/cacert.pem');

3. Réutiliser les handles cURL

Si vous faites plusieurs requêtes vers le même serveur, réutiliser le handle avec curl_reset() est plus performant qu'un curl_init() à chaque fois — la connexion TCP/TLS peut être réutilisée grâce au keep-alive.

4. Gérer les timeouts

<?php
curl_setopt_array($ch, [
    CURLOPT_TIMEOUT        => 30,   // timeout total en secondes
    CURLOPT_CONNECTTIMEOUT => 10,   // timeout de connexion seulement
]);

cURL natif vs Guzzle vs file_get_contents : lequel choisir ?

CritèrecURL natifGuzzlefile_get_contents
DépendancesExtension PHP cURLComposer + packageallow_url_fopen
APIVerbeux mais completFluide et moderneMinimaliste
AsyncNon (curl_multi_exec)Oui (Promises)Non
Gestion erreursManuelleExceptions automatiquesBasique
MiddlewaresNonOui (retry, log, cache...)Non
Idéal pourProjets sans ComposerProjets modernesScripts simples

Comment récupérer une commande cURL depuis votre navigateur

Vous pouvez exporter n'importe quelle requête HTTP faite par votre navigateur en commande cURL, ce qui est très utile pour déboguer ou reproduire un appel API :

  1. Ouvrez les DevTools (F12)
  2. Allez dans l'onglet Réseau (Network)
  3. Effectuez l'action qui déclenche la requête
  4. Clic droit sur la requête dans la liste → Copier → Copier en tant que cURL
  5. Collez la commande dans notre convertisseur cURL → PHP

Cette technique fonctionne dans Chrome, Firefox et Edge. Elle est particulièrement précieuse pour reproduire des appels authentifiés avec cookies ou tokens de session.

🎯 Convertissez vos commandes cURL maintenant !

Notre outil génère instantanément :

  • ✅ PHP cURL natif (curl_init / curl_setopt_array)
  • ✅ Guzzle HTTP (avec json, form_params, multipart)
  • ✅ file_get_contents avec stream_context
  • ✅ Détection automatique JSON, form-data, Basic Auth

🔄 Convertisseur cURL → PHP gratuit

Dernière mise à jour : Mars 2026 — Exemples testés avec PHP 8.2 et Guzzle 7.x.

🔍 Mots-clés :
curl to php convertir curl php curl php guzzle curl_exec php requête HTTP php curl php exemple transformer curl en php

📖 Articles similaires

dev

Mojibake, é, &eacute; : comprendre et réparer les problèmes d'encodage de texte

Pourquoi vos é deviennent é ou &eacute; ? Explication complète du mojibake, des encodages UTF-8...

📋 09/04/2026
dev

Encodage Base64 2026 : Encoder et décoder en Base64 facilement

Guide complet de l'encodage Base64 : comment encoder et décoder du texte, des fichiers, des images....

📋 28/01/2026
dev

Générateur de Code-Barres Gratuit 2026 : EAN-13, Code 128, QR Code

Créez des code-barres gratuitement : EAN-13, UPC, Code 128, Code 39. Téléchargement SVG/PNG, pers...

📋 28/01/2026