php - ixudra - Error fatal: llamada a la función indefinida curl_init() en... en la línea 9
call to undefined function curl_init() windows (9)
Esto es del sitio web oficial. php.net
Después de la instalación de PHP.
Windows
Mover a la carpeta Windows / system32: libssh2.dll, php_curl.dll, ssleay32.dll, libeay32.dll
Linux
Mover a la carpeta Apache24 / bin libssh2.dll
A continuación, descomente la extensión = php_curl.dll en php.ini
<?php
$filename = "xx.gif";
$handle = fopen($filename, "r");
$data = fread($handle, filesize($filename));
// $data is file data
$pvars = array(''image'' => base64_encode($data), ''key'' => IMGUR_API_KEY);
$timeout = 30;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, ''http://api.imgur.com/2/upload.xml'');
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $pvars);
$xml = curl_exec($curl);
curl_close ($curl);
var_dump($xml);
?>
Estoy jugando con la API de Imgur, pero parece que no funciona. PHP.net dice que curl_init()
está en PHP5, pero mi anfitrión dice que no. ¿Cómo puedo hacer que esto funcione?
Curl es una extensión que necesita ser instalada, no tiene nada que ver con la versión de PHP.
En las versiones anteriores de Debian y Ubuntu, resolvió esto instalando la extensión Curl para PHP y reiniciando el servidor web. Suponiendo que el servidor web es Apache 2:
sudo apt-get install php5-curl
sudo service apache2 restart
En las versiones más nuevas, el nombre del paquete ha cambiado:
sudo apt install php-curl
Es posible que necesites instalar más:
sudo apt-get install curl libcurl3 libcurl3-dev;
Experimentado esto en ubuntu 16.04 ejecutando PHP 7.1.14. Para resolver, primero ponga esto en un script y ejecútelo. Volverá verdadero si curl está instalado y habilitado, de lo contrario, devolverá falso.
<?php
var_dump(extension_loaded(''curl''));
?>
Si devuelve falso, ejecuta
sudo apt-get install php7.1-curl
Y finalmente,
sudo service apache2 restart
Después del reinicio, el script volverá a ser verdadero y, con suerte, su error debería resolverse.
Hay una solución con todos los detalles necesarios para Windows 7 x64:
http://www.youtube.com/watch?v=7qNTi1sEfE8
Está en francés, pero puedes entender todo! Resolví el mismo problema, incluso no hablo francés. :-)
Muchas respuestas olvidan mencionar que necesita agregar una nueva versión del archivo php_curl.dll desde esta ubicación: http://www.anindya.com/php-5-4-3-and-php-5-3-13-x64-64-bit-for-windows/
Agregué una nueva versión de php_curl.dll del archivo php_curl-5.4.3-VC9-x64.zip a las carpetas: C: / wamp / bin / php / php5.4.3 / ext y C: / Windows / System32 ¡y todo estaba bien!
No tengo suficiente reputación para comentar todavía. Usando Ubuntu y un simple:
sudo apt-get install php5-curl
sudo /etc/init.d/apache2 restart
NO funcionó para mí
Por algún motivo, curl.so
se instaló en una ubicación que no se recogió de forma predeterminada. Comprobé el extension_dir
en mi php.ini y copié sobre el curl.so
en mi extension_dir
cp /usr/lib/php5/20090626/curl.so /usr/local/lib/php/extensions/no-debug-non-zts-20090626
Espero que esto ayude a alguien, ajuste las ubicaciones de su camino en consecuencia.
hacer esto
sudo apt-get install php-curl
y reiniciar el servidor
sudo service apache2 restart
Para Ubuntu
Instale la extensión Curl para PHP y reinicie el servidor apache.
sudo apt-get install php5-curl
sudo service apache2 restart
Para ventanas
El problema surge debido a que no se incluye lib_curl.dll en PHP. también carga la siguiente extensión si no funciona,
extension=php_bz2.dll
extension=php_curl.dll
extension=php_dba.dll
Ahora reinicie el servidor Apache. Si obtiene un error "No se puede cargar php_curl.dll", copie las bibliotecas SSLEAY32.PHP, libEAY32.dll (OpenSSL) en la carpeta System32.
$ch = curl_init(''http://api.imgur.com/2/upload.xml''); //initialising our url
curl_setopt($ch, CURLOPT_MUTE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //used for https headers
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //used for https headers
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, urlencode($pvars));
//the value we post
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //waiting for reponse, default value in php is zero ie, curls normally do not wait for a response
curl_setopt($ch, CURLOPT_USERAGENT, ''Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0'');
$output = curl_exec($ch); //the real execution
curl_close($ch);
echo $output;
Prueba este código No estoy seguro de ello. Pero lo usé para enviar datos xml a una URL remota.