2010-12-18 11 views
42

Hola intenta PHP Post Request inside a POST Request pensando que podría ser útil para mí y mi código se da a continuacióncurl_init() no funciona

$sub_req_url = "http://localhost/index1.php"; 

$ch = curl_init($sub_req_url); 
$encoded = ''; 

// include GET as well as POST variables; your needs may vary. 
foreach($_GET as $name => $value) { 
    $encoded .= urlencode($name).'='.urlencode($value).'&'; 
} 

foreach($_POST as $name => $value) { 
    $encoded .= urlencode($name).'='.urlencode($value).'&'; 
} 

// chop off last ampersand 
$encoded = substr($encoded, 0, strlen($encoded)-1); 

curl_setopt($ch, CURLOPT_POSTFIELDS, $encoded); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_exec($ch); 
curl_close($ch); 

forma el archivo index.php y index2.php es otro archivo en el mismo directorio y cuando abro la página me sale el siguiente error en mi archivo error.log

[Sat Dec 18 15:24:53 2010] [error] [client ::1] PHP Fatal error: Call to undefined function curl_init() in /var/www/testing1/index.php on line 5 

lo que quiero hacer es que tengo un formulario de reserva que envía la solicitud de correos y luego quiero para procesar los valores de correos y enviar de nuevo post solicitud a paypal

+1

parece que la biblioteca curl no está habilitada –

+0

sí, no puedo encontrar curl en mi phpinfo –

+0

también no puedo encontrar curl en mi archivo php.ini –

Respuesta

109

Necesita instalar el soporte CURL para php.

En Ubuntu se puede instalar a través de

sudo apt-get install php5-curl 

Si está utilizando apt-get, entonces no se necesita para editar cualquier configuración de PHP, pero tendrá que reiniciar el Apache.

sudo /etc/init.d/apache2 restart 

Si todavía está recibiendo problemas, a continuación, tratar de utilizar phpinfo() para asegurarse de que se curvan aparece como instalado. (Si no es así, puede que necesite abrir otra pregunta, preguntándole por qué sus paquetes no se están instalando).

Hay un manual de instalación en el PHP CURL documentation.

+0

usuario @ explorerx: ~ $ sudo apt-get install php5_curl Lectura de listas de paquetes ... Hecho Construyendo el árbol de dependencia Leyendo información del estado ... Hecho E: No se pudo encontrar el paquete php5_curl –

+0

este es un nombre correcto php5-curl – RusAlex

+0

Creo que tiene razón pero es php5-curl. Lo estoy haciendo, vamos a ver –

18

Para Windows, si alguien está interesado, elimine la siguiente línea (quitando el;) de php.ini

;extension=php_curl.dll 

servidor Apache Reiniciar.

+1

Para usuarios de XAMPP, este php.ini se encuentra en su/xampp/apache/php /. Las versiones anteriores lo tienen en/xampp/apache/bin /. – Mave

+0

Para usuarios de Ubuntu, [las ubicaciones de los archivos php.ini se enumeran aquí] (http://askubuntu.com/a/356990/158714). Y tenga en cuenta que hay 2 archivos php.ini para Apache y CLI (línea de comandos) –

0

(Tratando de conseguir Curl de trabajo a través de PHP y Apache en Windows ...)

seguí recibiendo un error que dice: llamada a función no definida 'curl_init()'

Me aseguré de que tenía rizo con esta línea activada en mi archivo php.ini: extension = php_curl.dll

me aseguré de la variable extension_dir estaba siendo ajustado correctamente, así: extension_dir = "ext"

Estaba haciendo todo lo que todos los demás decían en los foros y Curl no aparecía en mi llamada a phpinfo(), y seguí recibiendo ese mismo error desde arriba.

Finalmente descubrí que Apache busca alfabéticamente php.ini en la carpeta C: \ Windows. Estuve cambiando php.ini en mi carpeta de instalación de PHP. Una vez que copié mi php.ini en C: \ Windows, todo funcionó.

Me tomó para siempre para resolver eso, así que pensé en publicar en caso de que ayude a alguien más.

0

RusAlex respuesta es correcta porque, para Apache usted tiene que instalar y activar rizo y reinicie el servicio de Apache:

sudo apt-get install php5-curl 
sudo service apache2 restart 

En mi Ubuntu Server con nginx y PHP5-FPM que sin embargo topé el siguiente problema Tuve que reiniciar nginx y PHP5-FPM de este modo:

sudo service nginx restart 
sudo service php5-fpm restart 

Pero había procesos PHP5-FPM no laborables dando vueltas, que al parecer es un error en ubuntu https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376 Así que tuve que matar a todos php5- inactivo procesos fpm a poder reiniciar php5-pies por minuto de manera que el módulo de rizo se carguen

sudo kill <Process Id of php5-fpm Process) 
1

para corregir este error, lo hice:

  1. php.ini En archivo, elimine esta línea: extension=php_curl.dll
  2. En php.ini archivo, elimine esta línea: extension_dir = "ext"
  3. me reinicia NETBEANS, ya que estaba utilizando una función de servidor de
+0

Punto 2. es lo que me solucionó. ¡¡Gracias!! – n00bAppDev

3

En mi caso, en Xubuntu, tuve que instalar bibliotecas libcurl3-dev libcurl3 . Con este comando todo funcionó:

sudo apt-get install curl libcurl3 libcurl3-dev php5-curl 
4

Para Ubuntu: añadir extension=php_curl.so a php.ini para permitir, si es necesario. Entonces sudo service apache2 restart

esto es cuidado general tomada de forma automática, pero hay situaciones - por ejemplo, en entornos de desarrollo compartidos - donde se puede llegar a ser necesarios para volver a habilitar manualmente.

La huella digital coincidirá con estas tres condiciones:

  1. de error fatal en curl_init() llaman
  2. en php_info, verá el autor módulo de rizo (rizo indicando que se ha instalado y disponible)
  3. también en php_info, que no verá bloque de configuración rizo (rizo que indica que no se ha cargado)
1

Recibí este error usando PHP7/Apache 2.4 en una plataforma de Windows. curl_init trabajado desde CLI pero no con Apache 2.4. Resolví añadiendo LoadFile directivas para libeay32.dll y ssleay32.dll:

LoadFile "C:/path/to/Php7/libeay32.dll" 
LoadFile "C:/path/to/Php7/ssleay32.dll" 
LoadFile "C:/path/to/Php7/php7ts.dll" 
LoadModule php7_module "C:/path/to/Php7/php7apache2_4.dll" 
0

función curl_int(); causa del error del servidor, instala sudo apt-get install php5-curl reinicia el servidor apache2 ..que funcionará como el encanto

0

Esta respuesta es para la petición https:

Curl no tiene una función de certificados raíz (como la mayoría de los navegadores modernos lo hacen). Es necesario señalar explícitamente en un archivo cacert.pem:

curl_setopt($ch, CURLOPT_CAINFO, '/path/to/cert/file/cacert.pem'); 

Sin esto, rizo no puede verificar el certificado enviado de vuelta a través de SSL. Este mismo archivo de certificado raíz se puede usar cada vez que usa SSL en curl.

Puede obtener el archivo cacert.pem aquí: http://curl.haxx.se/docs/caextract.html

Referencia PHP cURL Not Working with HTTPS