2017-04-25 4 views
0

Voici le code:Basic cURL exemple à récupérer le contenu de la page html du serveur distant

/* 
* Example to fetch the example.com homepage into a file 
*/ 

$curlObject = curl_init("http://AAA.BBB.CCC.DDD/");//AAA.BBB.CCC.DDD is the IP address of the remote server. 

$file = fopen("example_homepage.txt", "w"); 

curl_setopt($curlObject, CURLOPT_FILE, $file); 
curl_setopt($curlObject, CURLOPT_HEADER, 0); 

curl_exec($curlObject); 

curl_close($curlObject); 

fclose($file); 

Il est basé sur l'exemple here. J'apprends l'utilisation de base de cURL. La sortie attendue est que le contenu du répertoire htdocs du serveur XAMPP installé sur mon ordinateur distant (dont l'adresse IP est AAA.BBB.CCC.DDD) doit être copié dans le fichier example_homepage.txt une fois que j'exécuterai ce script PHP.

Maintenant, le fichier example_homepage.txt est créé, mais il est VIDE. Le contenu de la page d'accueil (index.php ou index.html) situé dans le répertoire htdocs du serveur XAMPP installé sur la machine distante n'est PAS copié dans le example_homepage.txt nouvellement créé.

La question est pourquoi et comment résoudre ce problème?

Répondre

1
  1. L'option boucle CURLOPT_FILE jamais vraiment travaillé pour moi, peut-être buggy. Ne l'utilisez pas, il y a d'autres moyens.

  2. Pour recevoir le contenu du corps, définissez l'option CURLOPT_RETURNTRANSFER avec curl_setopt($curlObject, CURLOPT_RETURNTRANSFER, true); Sinon, vous obtenez rien.

  3. Cela a fonctionné parfaitement pour moi (file_put_contents() crée le fichier s'il n'existe pas).

    <?php 
    $curlObject = curl_init("http://example.com/"); 
    curl_setopt($curlObject, CURLOPT_RETURNTRANSFER, true); 
    $result = curl_exec($curlObject); 
    curl_close($curlObject); 
    file_put_contents('example_homepage.txt', $result); 
    

Je l'ai essayé pour google.de et c'est le contenu de example_homepage.txt:

<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> 
<TITLE>301 Moved</TITLE></HEAD><BODY> 
<H1>301 Moved</H1> 
The document has moved 
<A HREF="http://www.google.de/">here</A>. 
</BODY></HTML> 

Utilisez par exemple http://www.google.de/ et cela fonctionnera comme prévu.