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.
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 .
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.
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
É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"
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
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.
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"
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
Pour corriger ce bug, j'ai fait:
php.ini
, décommentez cette ligne: extension=php_curl.dll
php.ini
, décommentez cette ligne: extension_dir = "ext"
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)
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
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.
(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.
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.