curlopt_url curl_setopt curl_init php lampp

php - curl_setopt - La función curl_init() no funciona



curl_init laravel (15)

Hola, intento PHP Post Request dentro de una solicitud POST pensando que podría ser útil para mí y mi código se da a continuación

$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);

formar el archivo index.php e index2.php es otro archivo en el mismo directorio y cuando abro la página obtengo 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 tener un formulario de reserva que envíe una solicitud de publicación y luego quiero procesar los valores de la publicación y enviar nuevamente la solicitud a PayPal


(Intentando que Curl funcione a través de PHP y Apache en Windows ...)

Seguí recibiendo un error diciendo: Llamar a la función no definida ''curl_init ()''

Me aseguré de haber habilitado Curl con esta línea en mi archivo php.ini: extension = php_curl.dll

Me aseguré de que la variable extension_dir se estableciera 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 de manera predeterminada 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ó una eternidad para resolverlo, así que pensé en publicar en caso de que ayudara a alguien más.


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

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


La respuesta de RusAlex es correcta, ya que para Apache debe instalar y habilitar Curl y reiniciar su servicio de Apache:

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

En mi Ubuntu Server con nginx y php5-fpm , sin embargo me encontré con el siguiente problema. Tuve que reiniciar nginx y php5-fpm así:

sudo service nginx restart sudo service php5-fpm restart

Pero tenía procesos php5-fpm que no funcionaban, lo que aparentemente es un error en ubuntu https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376 Así que tuve que matar a todos los php5 inactivos- Los procesos de fpm pueden reiniciar php5-fpm para que el módulo curl se cargue realmente

sudo kill <Process Id of php5-fpm Process)



Necesita instalar el soporte CURL para php.

En Ubuntu puedes instalarlo a través de

sudo apt-get install php5-curl

Si usa apt-get, entonces no necesitará editar ninguna configuración de PHP, pero deberá reiniciar su Apache.

sudo /etc/init.d/apache2 restart

Si aún tiene problemas, intente utilizar phpinfo() para asegurarse de que CURL phpinfo() como instalado. (Si no es así, es posible que deba abrir otra pregunta y preguntar por qué sus paquetes no se están instalando).

Hay un manual de instalación en la documentación PHP CURL .


Obtuve este error usando PHP7 / Apache 2.4 en una plataforma de Windows. curl_init funcionó desde CLI pero no con Apache 2.4. Lo resolví agregando directivas LoadFile 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"


Para PHP 7 y Windows x64

libeay32.dll, libssh2.dll y ssleay32.dll no deberían estar en apache / bin y solo deberían existir en el directorio php y agregar el directorio php en la variable de entorno del sistema. Este trabajo para mí.

Obvisouly en php.ini debería tener habilitar php_curl.dll también.


Para Ubuntu: agregue extension=php_curl.so a php.ini para habilitar, si es necesario. Luego sudo service apache2 restart

esto generalmente se realiza automáticamente, pero hay situaciones, por ejemplo, en entornos de desarrollo compartidos, donde puede ser necesario volver a habilitarlo manualmente.

La huella digital coincidirá con las tres condiciones siguientes:

  1. Error fatal en la llamada curl_init ()
  2. en php_info, verá el autor del módulo curl (que indica que Curl está instalado y disponible)
  3. también en php_info, verá ningún bloque de configuración de curl (lo que indica que no se cargó curl)

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

;extension=php_curl.dll

Reinicie el servidor apache.


Para arreglar este error, lo hice:

  1. En el archivo php.ini , elimine el comentario de esta línea: extension=php_curl.dll
  2. En el archivo php.ini , elimine el comentario de esta línea: extension_dir = "ext"
  3. Reinicié NETBEANS, ya que estaba usando el servidor incorporado


función curl_int (); causar error del servidor, instalar sudo apt-get install php5-curl restart servidor apache2 ... funcionará como el encanto



Paso 1 :

C:/(path to php folder)/php.ini enable extension=php_curl.dll

(eliminar el ; al final de la línea)

Paso 2 :

Agregue esto a Apache/conf/httpd.conf (libeay32.dll, ssleay32.dll, libssh2.dll encontrar directamente en la carpeta php7)

# load curl and open ssl libraries LoadFile "C:/(path to php folder)/libeay32.dll" LoadFile "C:/(path to php folder)/ssleay32.dll" LoadFile "C:/(path to php folder)/libssh2.dll"


Esta respuesta es para la solicitud https:

Curl no tiene certificados raíz integrados (como la mayoría de los navegadores modernos). Debe señalarlo explícitamente a un archivo cacert.pem:

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

Sin esto, curl no puede verificar el certificado devuelto 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 no funciona con HTTPS