2010-06-08 19 views
12

Estoy importando los contactos de Gmail a mi página .....curl_init undefined?

El proceso no funciona debido a este error

'curl_init' no está definido

La sugerencia que tengo es

  1. uncomment curl.dll destino
  2. copia las siguientes bibliotecas para el directorio windows/system32: ssleay32.dll y libeay32.dll
  3. copia php_curl.dll a windows/system32

Después de probar todos estos, que recrearon mi xampp, pero incluso entonces se produce un error.

Esta es mi página en la que estoy tratando de importar los contactos de Gmail:

<?php 
resource curl_init ([ string $url = NULL ]) 

$ch = curl_init(); 


curl_setopt($ch, CURLOPT_URL, "http://www.example.com/"); 
curl_setopt($ch, CURLOPT_HEADER, 0); 


curl_exec($ch); 


curl_close($ch); 
?> 

<?php 
echo "hi"; 

if($_POST['submit'] != '') { 
    echo "hi"; 

    $clientlogin_url = "https://www.google.com/accounts/ClientLogin"; 


    $clientlogin_post = array(
    "accountType" => "HOSTED_OR_GOOGLE", 
    "Email" => $_POST['Email'], 
    echo "Passwd" => $_POST['Passwd'], 
    "service" => "cp", 
    "source" => "tutsmore/1.2" 
    ); 


    $curl = curl_init($clientlogin_url); 


    curl_setopt($curl, CURLOPT_POST, true); 


    curl_setopt($curl, CURLOPT_POSTFIELDS, $clientlogin_post); 


    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY); 


    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 


    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 


    $response = curl_exec($curl); 



    preg_match("/Auth=([a-z0-9_\-]+)/i", $response, $matches); 
    $auth = $matches[1]; 


    $headers = array("Authorization: GoogleLogin auth=" . $auth); 


    $curl = curl_init('http://www.google.com/m8/feeds/contacts/default/full?max-results=10000'); 


    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 


    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 


    $feed = curl_exec($curl); 


    echo "contacts".$contacts=array(); 


    $doc=new DOMDocument(); 



    if (!empty($feed)) $doc->loadHTML($feed); 


    $xpath=new DOMXPath($doc); 


    $query="//entry"; 
    $data=$xpath->query($query); 

    foreach ($data as $node) { 


     $entry_nodes=$node->childNodes; 


     $tempArray=array(); 


     foreach($entry_nodes as $child) { 


      $domNodesName=$child->nodeName; 

      switch($domNodesName) { 
       case 'title' : { 
         $tempArray['fullName']=$child->nodeValue; 
        } break 
        ; 
       case 'email' : { 
         if (strpos($child->getAttribute('rel'),'home')!==false) 
          $tempArray['email_1']=$child->getAttribute('address'); 
         elseif(strpos($child->getAttribute('rel'),'work')!=false) 
          $tempArray['email_2']=$child->getAttribute('address'); 
         elseif(strpos($child->getAttribute('rel'),'other')!==false) 
          $tempArray['email_3']=$child->getAttribute('address'); 
        } break 
        ; 
      } 
     } 
     if (!empty($tempArray['email_1']))$contacts[$tempArray['email_1']]=$tempArray; 
     if(!empty($tempArray['email_2'])) $contacts[$tempArray['email_2']]=$tempArray; 
     if(!empty($tempArray['email_3'])) $contacts[$tempArray['email_3']]=$tempArray; 
    } 
    foreach($contacts as $key=>$val) { 

     echo $key."<br/>"; 
    } 
} 
else { 

    ?> 
<form action="<?=$PHP_SELF?>" method="POST"> 
    <table> 
     <tr> 
      <td>Email:</td><td><input type="text" name="Email" /></td> 
     </tr> 
     <tr> 
      <td>Password:</td><td><input type="password" name="Passwd" /></td> 
     </tr> 
     <tr><td colspan="2" align="center">tutsmore don't save your email and password trust us.</td></tr> 
     <tr><td colspan="2" align="center"><input type="submit" name="submit" value="Get Contacts" /></td></tr> 
    </table> 
</form> 
    <?php 
} 
?> 

Este código está completamente provisto para la depuración; si se necesita alguna optimización, intentaré optimizar el código.

Respuesta

8

Crear un nuevo archivo PHP - como temp.php - y acaba de añadir:

phpinfo(); 

hay que darle la información de toda la configuración del PHP. Desplácese por las bibliotecas instaladas y vea si cURL está allí. De lo contrario, acceda al Manual - http://php.net/manual/en/book.curl.php - y configúrelo. Las instrucciones allí son bastante buenas.

2

resource curl_init ([ string $url = NULL ])

¿Esto realmente aparecen en el código fuente? Si es así, coméntelo, ya que es solo documentación del tipo y argumentos de retorno de curl_init.

Ahora, si curl todavía le está dando problemas en este punto, debe verificar php.ini y asegurarse de que extension=php_curl.dll no tenga un frente a él. (No puedo decir si eso es lo que quiso decir con su primer comentario o no). Luego use XAMPP para reiniciar Apache.

30

para instalar rizo con php, sólo tiene que teclear el comando

sudo apt-get install php5-curl 

después de su instalación de PHP

+6

Parece que está usando Windows, no Linux. –

+0

para completar esto tuve que 'php5enmod curl' y' service apache2 restart' en debian – steven

0

utilizo este bloque de código para aprender si el host/servidor de un cliente tiene curl instalado o no

[email protected]_version(); 
$cv=$ci["version_number"]; 
if($cv) echo "curl installed"; 
else echo "curl is not installed"; 
1

para el servidor XAMMP, vaya a su archivo php.ini y quite la marca ; desde el principio del ser línea baja -

;extension=php_curl.dll 


reiniciar el servidor Apache, ahora es no tendrán ningún problema :) ..

2

con Linux: sudo apt-get install php5.6-curl (php5-rizo se ha ido) reinicie Apache (sudo service apache2 restart)

también para la línea php comando, el compositor y tal, simplemente añadiendo sudo apt-get install php-curl funcionará porque 'pensar' su actuación en su versión activa