Page 1 sur 1

Problème CURL sur Linux

Posté : 29 août 2016, 10:04
par Pepsi33
Bonjour à tous,

Je suis en train de développer un petit script CURL / PHP qui, pour l'instant, permet de se connecter à une plateforme via Login et mot de passe. Problème: Cela fonctionne très bien sur Windows; par contre, cela ne fonctionne pas sur Linux. Savez-vous pourquoi ? Je me tire les cheveux depuis 3 heures à essayer de comprendre comment quelque chose peut fonctionner sur Windows mais pas sur Linux.

Merci à tous pour votre aide :)

Code : Tout sélectionner

/* Identification */ $urlLogin = URL_LOGIN; $postField = array( 'username' => LOGIN, 'password' => PASSWORD, 'remember' => 'on', ); $this->_curl = curl_init($urlLogin); curl_setopt($this->_curl, CURLOPT_FRESH_CONNECT, true); curl_setopt($this->_curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($this->_curl, CURLOPT_POST, true); curl_setopt($this->_curl, CURLOPT_POSTFIELDS, $postField); curl_setopt($this->_curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($this->_curl, CURLOPT_COOKIE, true); curl_setopt($this->_curl, CURLOPT_COOKIEJAR, COOKIE_FILE); curl_setopt($this->_curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($this->_curl, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($this->_curl, CURLOPT_TIMEOUT, 240); curl_setopt($this->_curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0'); $result = curl_exec($this->_curl); $codeError = curl_errno($this->_curl); $msgError = curl_error($this->_curl); curl_close($this->_curl);
A noter que si j'enlève le connecttimeout, cela me retourne le code d'erreur 7 et le message "couldn't connect to host". De même, si je teste une requête minimaliste (comme ci-dessous), même résultat :( J'ai testé une requête GET avec d'autres pages du site, toujours pareil. Je pense qu'il y a quelque chose qui bloque les requêtes mais impossible de trouver quoi.

Code : Tout sélectionner

/* Identification */ $urlLogin = URL_LOGIN; $this->_curl = curl_init($urlLogin); curl_setopt($this->_curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($this->_curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($this->_curl, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($this->_curl); $codeError = curl_errno($this->_curl); $msgError = curl_error($this->_curl); curl_close($this->_curl);

Re: Problème CURL sur Linux

Posté : 29 août 2016, 18:37
par Pepsi33
J'ai fais d'autres tests:

- Test d'une requête toute simple sur https://www.hurl.it/: ça fonctionne. J'en déduis que le site ne doit pas aimer les serveurs linux (c'est la seule chose qui diffère)

- Utilisation de file_get_contents: même erreur
- Test sur un autre serveur linux: même erreur
- Test de GET avec une autre URL du même site (type CGV): même erreur
- Test avec https://www.google.fr: cela fonctionne
- Test avec des header: même erreur

Code : Tout sélectionner

$ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0'; $header = array(); $header[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; $header[] = "Accept-Encoding: gzip, deflate, br"; $header[] = "Accept-Language: fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3"; $header[] = "Connection: keep-alive"; $header[] = "Host: " . URL; $header[] = "Referer: " . URL; $header[] = "Upgrade-Insecure-Requests: 1"; $header[] = "User-Agent: $ua"; curl_setopt($this->_curl, CURLOPT_USERAGENT, $ua);
J'avoue que là je sèche. Des idées ?

Merci :=)

Re: Problème CURL sur Linux

Posté : 29 août 2016, 21:15
par @rthur
Installe Wireshark et fait l'analyse réseau pour voir ce qui diffère entre ton serveur de test et ton serveur de prod.
https://www.wireshark.org/download.html

Je doute fortement que ce soit l'OS, vu que tu utilises curl dans les deux cas...
Peut être la version de curl qui n'est pas la même ?

Re: Problème CURL sur Linux

Posté : 05 sept. 2016, 14:13
par Pepsi33
Merci pour ta réponse. J'ai upgradé curl sur le serveur, toujours le même problème.

D'autres pistes ?

Re: Problème CURL sur Linux

Posté : 05 sept. 2016, 14:46
par @rthur
Tu as fait une analyse réseau avec Wireshark ?

Re: Problème CURL sur Linux

Posté : 05 sept. 2016, 15:14
par Pepsi33
Non, j'ai téléchargé le logiciel mais j'avoue que ça a l'air assez complexe. Peux-tu m'expliquer en quoi il va me permettre de trouver le problème ?

Merci beaucoup ;)

Re: Problème CURL sur Linux

Posté : 05 sept. 2016, 18:01
par @rthur
Il permet de regarder tout ce qui se passe sur le réseau, donc tu vas voir les appels effectués et les réponses faites par le serveur.