[RESOLU] Ligne de commande OK mais page web KO

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Ligne de commande OK mais page web KO

Re: Ligne de commande OK mais page web KO

par Txo » 04 déc. 2018, 08:45

Merci et bonjour,
J'ai regardé et j'ai déjà (malheureusement ?) ce lien dans /etc/php5/cgi/conf.d/. Il est daté du jour de l'installation de php5-curl. Malgré tout, phpinfo ne fait aucune mention de curl.

Après avoir écrit cela, j'ai réfléchi (ça m'arrive par inadvertance) au fait que lighttpd ne prenait pas en compte curl. Et malgré que j'étais persuadé de l'avoir fait, j'ai redémarré le bouzin. Et miracle, curl est apparu dans toute sa beauté.
Merci à tous.

NB : Les scripts au dessus ne fonctionne plus parce qu'eaufrance.fr a choisi ce moment pour passer de la version bêta à la V1. Quelques heures pour comprendre d'où venait ces erreurs. Tout simplement l'URL a changé.

Re: Ligne de commande OK mais page web KO

par Saian » 03 déc. 2018, 11:27

Salut, en ligne de commande c'est php cli qui est utilisé mais pour le serveur web c'est plutôt php cgi. La lib curl peut être activée pour le cli sans être activée pour le cgi.
Tu peux utiliser la fonction phpinfo() dans ta page pour voir les modules activés. Si curl n'y est pas tu dois alors l'activer.
Je ne saurai te dire la procédure standard mais normalement tu dois avoir un fichier curl.ini dans /etc/php5/mods-available/, il faut que tu en crées un lien symbolique dans /etc/php5/cgi/conf.d/.
Sur ma VB ubuntu il se présente comme ça 20-curl.ini -> ../../mods-available/curl.ini

Re: Ligne de commande OK mais page web KO

par Txo » 03 déc. 2018, 06:57

La balise standard pour démarrer du code PHP est <?php
Merci pour cette réponse.
Cela résout bien le problème sur ma machine personnelle avec Debian Sid, apache et php7.3. Et là j'obtiens la phrase magique.
Par contre sur le Raspberry raspbian wheezy (!) qui sert ma météo (http://viele.mooo.com/txo/testinclude.php), et qui tourne avec lighttpd et php5, rien de mieux. Je me prends un Call to undefined function curl_init() in /home/pi/public_html/eauxml.php on line 6. J'ai pourtant php curl d'installé.

Code : Tout sélectionner

$ php -i | grep curl /etc/php5/cli/conf.d/20-curl.ini, curl
mais lighttpd qui a assumé jusque là semble dépassé. J'ai peur de devoir passer tout cela sur apache, ce qui ne m'enchante guère.
Pour info ma page de test :

Code : Tout sélectionner

<?php error_reporting(E_ALL); ini_set("display_errors", 1); ?> <html> <head> <title>test</title> <meta name="generator" content="Bluefish 2.2.10" > <meta name="author" content="Txo" > <meta name="date" content="2018-12-03T05:07:21+0100" > <meta name="copyright" content=""> <meta name="keywords" content=""> <meta name="description" content=""> <meta name="ROBOTS" content="NOINDEX, NOFOLLOW"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"> <meta http-equiv="content-style-type" content="text/css"> <meta http-equiv="expires" content="0"> <link href="" rel="stylesheet" type="text/css"> </head> <body> <p>bein merde alors</p> <?php require("eauxml.php"); ?> </body> </html>

Re: Ligne de commande OK mais page web KO

par @rthur » 02 déc. 2018, 18:57

La balise standard pour démarrer du code PHP est <?php

Si tu utilises <? il y a de fortes chances que ça ne fonctionne pas car il faut configurer spécifiquement le serveur PHP pour qu'il accepte cette forme et de moins en moins de serveurs PHP le gèrent.
+ d'infos : http://php.net/manual/fr/language.basic ... hptags.php

Ligne de commande OK mais page web KO

par Txo » 02 déc. 2018, 16:59

Bonjour
Déclaration préalable : Je suis un programmeur empirique qui se contente de coller des bouts de scripts trouvés ça et là. Fatalement certains vont s'arracher les cheveux en voyant mon code. Mais je n'ai pas vraiment le choix.

Je voudrais rajouter la hauteur d'eau du fleuve.sur ma page météo. Avec ma méthode habituelle, je suis arrivé à ça

Code : Tout sélectionner

<?php error_reporting(E_ALL); ini_set("display_errors", 1); setlocale(LC_TIME, 'fr_FR.utf8','fra'); //La page qu'on veut utiliser $vidourleURL = 'hubeau.eaufrance.fr/api/vbeta/hydrometrie/observations_tr.xml?code_entite=Y3414005&size=1&pretty&grandeur_hydro=H&fields=date_obs,resultat_obs'; //On initialise cURL $ch = curl_init(); //On lui transmet la variable qui contient l'URL curl_setopt($ch, CURLOPT_URL, $vidourleURL); //On lui demdande de nous retourner la page curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //On envoie un user-agent pour ne pas être considéré comme un bot malicieux curl_setopt($ch, CURLOPT_USERAGENT, 'La météo de Vièle (viele.mooo.com/txo/test.php'); //On exécute notre requête et met le résultat dans une variable $resultat = curl_exec($ch); //On ferme la connexion cURL curl_close($ch); //On crée un nouveau document DOMDocument $vidourleh = new DOMDocument(); //On y charge le contenu qu'on a récupéré avec cURL $vidourleh->loadXML($resultat); //On met le contenu du premier <DtFinSerie> dans une variable $date = trim($vidourleh->getElementsByTagName('DtFinSerie')->item(0)->nodeValue); $cote = trim($vidourleh->getElementsByTagName('ResObsHydro')->item(0)->nodeValue); $datef = new DateTime($date, new DateTimeZone('UTC')); $stz = new DateTimeZone('Europe/Paris'); $datef->setTimeZone($stz); echo "Le " . $datef->format('d\/m\/Y \à G \h i') . ", le Virdoule était à " . str_replace('.',',', $cote) . " mm.\n"; ?>
En ligne de commande avec

Code : Tout sélectionner

php eauxml.php
j'ai bien

Code : Tout sélectionner

Le 02/12/2018 à 14 h 30, le Virdoule était à 853,0 mm.
Le problème, pour moi est d'arriver à intégrer cela à ma page web. J'ai teste avec un

Code : Tout sélectionner

<? include("eauxml.php") ?>
Mais rien ne s'affiche et la page bute à cette ligne.

Que faire pour y arriver.

Merci.