pb jpgraph et free !

gribouille067
Invité n'ayant pas de compte PHPfrance

14 mai 2012, 10:04

Bonjour,

Donc comme l'indique le sujet, j'ai un soucis d'affichage de mon diagramme sur free.
Le graphe fonctionne parfaitement en local et malheureusement pas sur mon site.
Je suis en php version 5.1.3RC4-dev
Il me semble avoir mis dans mon jpg.config.inc.php le bon chemin pour les polices et le cache :
define("CACHE_DIR","/mnt/154/sda/0/e/user/admin/jpgraph/cache/");
define("TTF_DIR","/mnt/154/sda/0/e/user/admin/jpgraph/fonts/");
define("MBTTF_DIR","/mnt/154/sda/0/e/user/admin/jpgraph/fonts/");

define('CSIMCACHE_DIR','/mnt/154/sda/0/e/user/admin/jpgraph/csimcache/');
define('CSIMCACHE_HTTP_DIR','/mnt/154/sda/0/e/user/admin/jpgraph/csimcache/');
J'ai désactivé la fonction stroke pour voir un quelconque message mais malheureusement je n'ai pas message juste une jolie petite croix rouge à la place (d'ailleurs dans les propriétés on voit que mon url est bien renseigné avec mes variables).
Alors, si quelqu'un à une piste pour essayer de déboguer mon pb elle est là bien venue :D

Merci d'avance

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

14 mai 2012, 10:58

Salut,

Z'ont pas une version de pho plus récente, maintenue et finalisée des fois ?

As tu regarder la source de la page lorsque tu affiche l'image ?
As tu accès au log du serveur web s'il y a erreur c'est dedans.
As tu essayé d'afficher le chemin ? (un simple echo __FILE__; par exemple dans un fichier) ?

@+
Il en faut peu pour être heureux ......

gribouille067
Invité n'ayant pas de compte PHPfrance

14 mai 2012, 11:22

Tout d'abord merci Moogli d'avoir répondu aussi rapidement, c'est vraiment cool (surtout que la date d'échéance de ma présentation se rapproche dangeureusement).
Bref, pour la version php c'est la plus récente que free met actuellement à dispo !
Concernant la source, pour moi tout est bien interprété au niveau du code :
<img id='image_graph' src='graph_c.php?titre1=Activité : piscine - Nombre total : 4 usagers&titre2=&nb=a:2:{i:0;s:1:"3";i:1;s:1:"1";}&nom=a:2:{i:0;s:11:"Lingolsheim";i:1;s:12:"Schiltigheim";}&format=oui' /> 
le chemin il est ok (je l'ai confirmé avec un realpath)
En revanche, je vais voir pour trouver une manip pour qu'il m'affiche les erreurs php dans un fichier log et je te tiendrai au courant.

A bientôt ! 8-)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

14 mai 2012, 19:24

Heu j'dit ça j'dit rien mais c'est le bordel ton URL la.
Tu sais que certain caractères sont pas super aimé dans une URL ?

J'ai l'impression que tu passe tu json la dedans ?

Y à pas moyen de mettre ça en session(ou autre par) et de simplement faire une référence dessus ?
Sinon base64encode + base64decode pour éviter les problèmes d'url mal encodée / décodé (surtout avec les caractères accentués dedans :mrgreen: ).

Pour le debug tu commence par mettre direct l'url de l'image dans ton navigateur préfèré et vois ce qui ce passe (soit il affiche l'image soit pas ;) )
En supprimant l'affichage tu devrais voir les erreurs s'il y en a (pense que tout ce qui s'affiche est considèré comme l'image ce qui peux la corrompre).
error_reporting(E_ALL|E_STRICT); obligatoire en première ligne pour le debugage.

Après affiche les infos à grand coup de var_dump() a moins que n'ai un envirronnent de debugage fonctionnel (zend studio, eclipse, netbeans ou autres).

@+
Il en faut peu pour être heureux ......

gribouille067
Invité n'ayant pas de compte PHPfrance

15 mai 2012, 09:55

Salut Moogli !

Alors dans l'ordre de ton dernier post :
- na il n'y a pas de JSON :)
- j'ai encodé (et décodé derrière) les variables titre1 et titre2 ;
- en envoyant l'url de l'image ; à savoir http://serge.pfluger.free.fr/admin/grap ... format=oui

j'obtiens les messages suivants :
  • Warning: Invalid argument supplied for foreach() in /mnt/154/sda/0/e/serge.pfluger/admin/jpgraph/jpgraph_theme.inc.php on line 13

    Strict Standards: strftime() [function.strftime]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in /mnt/154/sda/0/e/serge.pfluger/admin/jpgraphp/jpgraph.php on line 415
    ...
En vérifiant dans jpgraph_theme.inc.php à la ligne en question :
foreach (glob(dirname(__FILE__) . '/themes/*.php') as $theme_class_script) 
le répertoire themes se trouvant dans le rep jpgraph, me demande si ce n'est quand même pas un pb d'interprétation entre chemin relatif et absolu

et sur le nom moins fameux jpgraph.php :
j'ai pas mal d'erreurs sur strftime !
       
        $this->iLocale = $aLocale;
        for( $i = 0, $ofs = 0 - strftime('%w'); $i < 7; $i++, $ofs++ ) {  // la ligne 415 
            $day = strftime('%a', strtotime("$ofs day"));
            $day[0] = strtoupper($day[0]);
            $this->iDayAbb[$aLocale][]= $day[0];
            $this->iShortDay[$aLocale][]= $day;
        }

        for($i=1; $i<=12; ++$i) {
            list($short ,$full) = explode('|', strftime("%b|%B",strtotime("2001-$i-01")));
            $this->iShortMonth[$aLocale][] = ucfirst($short);
            $this->iMonthName [$aLocale][] = ucfirst($full);
        }
        setlocale(LC_TIME, $pLocale);
Je pense que le formatage de le date suivant la localisation locale doit ne pas fonctionner correctement car il semblerait que tous les caractères modificateurs ne sont pas toujours supportés par toutes les bibliothèques et dans ce cas, ils risquent de ne pas être supportés par la version PHP de free :(

et il se termine en me gratifiant d'un
  • JpGraph Error: 15009 Illegal pie plot. Sum of all data is zero for Pie Plot
Bon ça j'ai comme l'impression qu'il n'a rien récupérer de mes données pour faire son graphe :(

Et donc pour conclure, oui je m'étais posé la question sur l'utilisation ou non de variables sessions, j'ai préféré sérialisé pensant que je n'aurai pas non plus énormément d'info à mettre dans l'url. J'avais oublié qu'on était limité par rapport à la taille de l'url. Donc je pense que je vais plutôt mettre des éléments qui me permettront de formuler et d'envoyer ma requête dans mon graph_c.php (à moins que ce ne soit pas possible) et dans ce cas je prendrai les var sessions.

Pour info, les log_errors sont désactivées sur free.

@+

Invité
Invité n'ayant pas de compte PHPfrance

21 mai 2012, 11:34

Alors bonjour à tous et tout particulièrement à moogli ;)
Alors tout d'abord concernant mon erreur warning "Strict Standards: strftime() [function.strftime]: It is not safe to rely on the system's timezone settings..." est l'illustration de ce que je disais hier : les dernières versions de PHP sont plus strictes en matière de code.
Il suffit simplement d'ajouter la "ligne date_default_timezone_set('UTC');" avant l'autre pour régler ce warning multiple

Ensuite, il y avait un soucis de chemin sur un problème de header qui venait du fichier jpgraph_theme :
foreach (glob(dirname(__FILE__) . '/themes/*.php') as $theme_class_script) {
require_once($theme_class_script);
}
j'ai remplacé ça par : require('themes/UniversalTheme.class.php');
Il ne charge plus les 9 thèmes, mais au moins il en charge un qui marche (et en plus ce correctif bouffe bcp moins de RAM sur le serveur).

Et pour finir, le meilleur pour la fin, j'ai finalement sérialisé mes 2 variables tableaux, encodé les autres variables et je les ai transférés dans des variables sessions. Variables sessions que j'ai bien sur soit dé-sérialisé ou décodé dans mon graph.php.

Voili voilou !

En espérant que cela puisse servir à qqun ;)