IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

récupération d'un csv avec cURL


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 43
    Points : 31
    Points
    31
    Par défaut récupération d'un csv avec cURL
    Bonjour,
    J'essaie d'utiliser cURL pour récupérer un fichier csv présent dans l'adresse url : "https://www.nomdusite.com/test/cartes.csv" (j'ai volontairement écris nomdusite pour préserver l'anonyma de celui-ci). Le fichier se télécharge automatiquement lorsque que je rentre l'url dans le navigateur, donc le fichier s'y trouve bien.

    Voici le code php que j'utilise (j'omets la partie html pour alléger le tout) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
     
            //récupération du csv avec curl
            $path = "C:/xampp/htdocs/projet/Doc/fichier.csv"; //chemin où stocker le fichier
            $url="https://www.nomdusite.com/test/cartes.csv"; //url du fichier
     
            $fp = fopen($path, 'w');
     
            $ch = curl_init($url);
            curl_setopt($ch, CURLOPT_FILE, $fp);
            $data = curl_exec($ch);
            $curl_errno = curl_errno($ch);
            $curl_error = curl_error($ch);
            curl_close($ch);
            fclose($fp);
     
            if ($curl_errno > 0) {
                echo "cURL Error ($curl_errno): $curl_error\n";
            } else {
                echo "Data received: $data\n";
            }
     
            ?>
    Aprés l'exécution de se programme, l'erreur suivante s'affiche :
    cURL Error (60): SSL certificate problem: unable to get local issuer certificate
    Que signifie-t-elle ? Comment la résoudre ?

    Je rajoute qu'un fichier csv vide est créé dans le path après l'exécution du programme.

    Merci de votre aide!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 383
    Points
    383
    Par défaut
    C'est un problème de certificat pas compliqué à résoudre

    Solution 1 : tu dit à curl d'ignorer les erreurs de certificats avec curl_setopt. Solution gruik mais qui a le mérite d'exister

    Solution 2 : Soit tu récupère https://curl.haxx.se/ca/cacert.pem

    Tu met ce fichier dans c:\xampp\php\

    Ensuite soit tu précise le fichier de certificat à utiliser avec curl_setopt à chaque fois que tu voudra utiliser curl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    curl_setopt($ch, CURLOPT_CAINFO, 'c:\\xampp\\php\\cacert.pem');
    Ou mieux tu le précise une bonne fois pour toute dans php.ini

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    curl.cainfo=c:\xampp\php\cacert.pem

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 43
    Points : 31
    Points
    31
    Par défaut
    Merci de ta réponse

    L'url du fichier ne me télécharge rien. J'ai donc essayé 2 méthodes :
    - ctrl a , ctrl v dans un fichier texte que j'ai nommé cacert.pem
    - clique droit enregistrer sous

    J'utilise ensuite la ligne que tu m'as passée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_setopt($ch, CURLOPT_CAINFO, 'c:\\xampp\\php\\cacert.pem');
    Mais dans les deux cas, j'obtiens l'erreur suivante :
    cURL Error (77): error setting certificate verify locations: CAfile: c:\xampp\php\cacert.pem CApath: none
    On dirait qu'il ne trouve pas le fichier dans ce chemin, mais j'ai vérifié et il y est bien :/ (il est nommé cacert.pem mais ca indique que c'est un fichier TXT).

    Sinon, peux-tu me passer la ligne de code bourrine pour ignorer les erreurs de certificats ?

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 43
    Points : 31
    Points
    31
    Par défaut
    Je pense avoir réussi la méthode bourrine en ajoutant les lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    Je me doute que ce n'est pas propre, mais j'ai réussi à récupérer le fichier que je voulais !

    J'attends d'essayer la méthode moins bourrine avant de passer la discussion en résolue

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Points : 383
    Points
    383
    Par défaut
    C'est bien ces options là qui désactivent les vérifications de certificats.

    Tu pourrais faire un clic droit/propriétés sur ton fichier cacert.pem ? Si windows t'indique que c'est un fichier texte, ton fichier s'appelle probablement cacert.pem.txt

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 43
    Points : 31
    Points
    31
    Par défaut
    Ca fonctionne ! je m'en veux, c'était plutôt simple à trouver ça...

    Merci de ton aide précieuse !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.4] Récupération de données avec CURL
    Par yougha dans le forum Langage
    Réponses: 4
    Dernier message: 29/07/2013, 13h36
  2. [Google Spreadsheet] Export csv avec wget ou curl
    Par laloune dans le forum APIs Google
    Réponses: 1
    Dernier message: 10/01/2013, 12h16
  3. [PHP 5.0] Récupération de l'encodage d'un url avec Curl
    Par yule dans le forum Langage
    Réponses: 3
    Dernier message: 15/09/2010, 10h16
  4. Pb récupération d'une somme avec SUM()
    Par momo99 dans le forum InterBase
    Réponses: 3
    Dernier message: 01/11/2005, 15h38
  5. [DOM] Récupération d'un noeud avec critères ?
    Par elitost dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 20/10/2005, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo