web-dev-qa-db-fra.com

fonction curl_init () ne fonctionne pas

Bonjour, j'essaie PHP Post Request dans une POST Request pensant que cela pourrait m'être utile et mon code est donné ci-dessous

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

forme le fichier index.php et index2.php est un autre fichier dans le même répertoire et quand j’ouvre la page j’obtiens l’erreur suivante dans mon fichier 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

Ce que je veux faire, c’est que j’ai un formulaire de réservation qui envoie une demande de publication et que je souhaite ensuite traiter les valeurs de publication et renvoyer la demande de publication à Paypal.

53
Santosh Linkha

Vous devez installer le support CURL pour php.

Dans Ubuntu, vous pouvez l'installer via

Sudo apt-get install php5-curl

Si vous utilisez apt-get, vous n'aurez pas besoin de modifier la configuration PHP, mais vous devrez redémarrer votre Apache.

Sudo /etc/init.d/Apache2 restart

Si le problème persiste, essayez d’utiliser phpinfo () pour vérifier que CURL est répertorié comme étant installé. (Si ce n'est pas le cas, vous devrez peut-être ouvrir une autre question et demander pourquoi vos paquets ne sont pas installés.)

Il existe un manuel d’installation dans la documentation PHP CURL .

125
RusAlex

Pour Windows, si cela vous intéresse, décommentez la ligne suivante (en supprimant le;) du fichier php.ini.

;extension=php_curl.dll

Redémarrez le serveur Apache.

23
Kanda

Je l'ai eu travailler dans Ubuntu 16.04 en suivant les étapes. Ma version de PHP était 7.0 

Sudo apt-get install php7.0-curl

Service Sudo Apache2 redémarrer

Je l'ai eu de ce lien vérifier ici pour plus de détails

5
Jose Kj

Étape 1 :

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

(supprimez le ; à la fin de la ligne)

Étape 2 :

Ajoutez ceci à Apache/conf/httpd.conf (libeay32.dll, ssleay32.dll, libssh2.dll trouvés directement dans le dossier 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"
3
Hiruna De Alwis

Dans mon cas, sous Xubuntu, je devais installer les bibliothèques libcurl3 libcurl3-dev. Avec cette commande tout a fonctionné:

Sudo apt-get install curl libcurl3 libcurl3-dev php5-curl
3
lightbyte

Ajoutez simplement ma réponse pour le cas où plusieurs versions de PHP sont installées sur votre système et que vous êtes sûr d'avoir déjà installé le paquet php-curl et qu'Apache vous envoie toujours la même erreur.

curl_init () undefined même si php-curl est activé dans Php 7.

2
ultrajohn

J'ai eu cette erreur en utilisant PHP7/Apache 2.4 sur une plate-forme Windows. curl_init fonctionnait à partir de la CLI mais pas avec Apache 2.4. Je l'ai résolu en ajoutant les directives LoadFile pour libeay32.dll et 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"
2
fishbone

Cette réponse concerne la requête https:

Curl n'a pas de certificat racine intégré (comme la plupart des navigateurs modernes). Vous devez explicitement le diriger vers un fichier cacert.pem: 

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

Sans cela, curl ne peut pas vérifier le certificat renvoyé via ssl. Ce même fichier de certificat racine peut être utilisé chaque fois que vous utilisez SSL in curl.

Vous pouvez obtenir le fichier cacert.pem ici: http://curl.haxx.se/docs/caextract.html

Référence PHP cURL ne fonctionne pas avec HTTPS

1
Amit Garg

Pour corriger ce bug, j'ai fait:

  1. Dans le fichier php.ini, décommentez cette ligne: extension=php_curl.dll
  2. Dans le fichier php.ini, décommentez cette ligne: extension_dir = "ext"
  3. J'ai redémarré NETBEANS, car j'utilisais un serveur intégré. 
1
Rajat26

La réponse de RusAlex est exacte en ce que pour Apache, vous devez installer et activer curl et redémarrer votre service Apache:

Sudo apt-get install php5-curl
Sudo service Apache2 restart

Sur mon serveur Ubuntu avec nginx et php5-fpm, j’ai cependant rencontré le problème suivant. Je devais redémarrer nginx et php5-fpm comme ceci:

Sudo service nginx restart
Sudo service php5-fpm restart

Mais j'avais des processus php5-fpm qui ne fonctionnaient pas, ce qui est apparemment un bogue dans ubuntu https://bugs.launchpad.net/ubuntu/+source/php5/+bug/1242376 a dû tuer tous les processus inactifs de php5-fpm pour pouvoir redémarrer php5-fpm afin que le module curl soit réellement chargé

Sudo kill <Process Id of php5-fpm Process)
0
Pascal Klein

function curl_int (); cause d'erreur de serveur, installez Sudo apt-get install php5-curl redémarrez le serveur Apache2 .. cela fonctionnera comme un charme

0
Rajesh Kumar

Pour Linux, vous pouvez l'installer via

Sudo apt-get install php5-curl

Pour Windows (supprimer le;) de php.ini

;extension=php_curl.dll

Redémarrez le serveur Apache.

0
Mohsen Zamani

(Essayer de faire fonctionner Curl via PHP et Apache sous Windows ...)

J'ai gardé une erreur en disant: Appelez la fonction non définie 'curl_init ()'

Je me suis assuré que j'avais activé curl avec cette ligne dans mon fichier php.ini: Extension = php_curl.dll

Je me suis assuré que la variable extension_dir était correctement définie, comme ceci: Extension_dir = "ext"

Je faisais tout ce que tout le monde disait sur les forums et curl n'apparaissait pas dans mon appel à phpinfo (), et j'entendais toujours la même erreur d'en haut.

Enfin, j'ai découvert que Apache par défaut cherchait le fichier php.ini dans le dossier C:\Windows. J'avais changé php.ini dans mon dossier d'installation PHP. Une fois que j'ai copié mon fichier php.ini dans C:\Windows, tout a fonctionné.

Il m'a fallu une éternité pour comprendre cela, alors j'ai pensé poster au cas où cela aiderait quelqu'un d'autre.

0
jessejuicer

Pour PHP 7 et Windows x64

libeay32.dll, libssh2.dll et ssleay32.dll ne doivent pas figurer dans Apache/bin et doivent exister uniquement dans le répertoire php et ajouter un répertoire php dans la variable d'environnement système. Ce travail pour moi.

Bien évidemment, dans php.ini, vous devriez également activer php_curl.dll. 

0
Wasim A.