Fonction compatible php 5.5.12 mais non-compatible php 5.3.3 pq?

Fonction compatible php 5.5.12 mais non-compatible php 5.3.3 pq? - PHP - Programmation

Marsh Posté le 08-01-2015 à 13:59:15    

Bonjour,
 
Voici une fonction que j'utilise et elle fonctionne très bien quand je l'utilise en local sur mon serveur WAMPSERVER (version PHP 5.5.12).
 

Code :
  1. function getAll($year){
  2.             $r = array();
  3.             $date = new DateTime($year.'-01-01');
  4.             while($date->format('Y') <= $year){
  5.                 $y = $date->format('Y');
  6.                 $m = $date->format('n');
  7.                 $d = $date->format('j');
  8.                 $w = str_replace('0','7', $date->format('w'));
  9.                 $r[$y][$m][$d] = $w;
  10.                 $date->add(new DateInterval('P1D'));
  11.             }
  12.             return $r;
  13. }


mais lorsque je l'utilise en direct sur mon site web ça ne marche pas, par contre la version de PHP est 5.3.3.
Est-ce que cette différence de version peut empêcher le bon fonctionnement de cette fonction??? Merci !

Reply

Marsh Posté le 08-01-2015 à 13:59:15   

Reply

Marsh Posté le 08-01-2015 à 15:27:27    

T'as quoi comme msg d'erreur et à quelle ligne ?
 
Perso, j'aurais opté pour DateInterval() qui pose souci mais la doc indique que c'est bon à partir de php 5.3.
 
Pour info, quand on développe, on essaye d'être au plus prêt de la version de prod sur sa station de dév. Perso, je mets une version un peu en-dessous de celle de prod comme ça, j'ai très rarement des surprises du fait qu'une version supérieure est rétro-compatible avec une version un peu inférieure. :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 08-01-2015 à 15:43:18    

rufo a écrit :

T'as quoi comme msg d'erreur et à quelle ligne ?
 
Perso, j'aurais opté pour DateInterval() qui pose souci mais la doc indique que c'est bon à partir de php 5.3.
 
Pour info, quand on développe, on essaye d'être au plus prêt de la version de prod sur sa station de dév. Perso, je mets une version un peu en-dessous de celle de prod comme ça, j'ai très rarement des surprises du fait qu'une version supérieure est rétro-compatible avec une version un peu inférieure. :o


Salut,
 
je n'ai pas de message d'erreur. à l'endroit où je fait appelle à cette fonction c'est ici :
je viens d'ajouter les 2 "print_r()" et "echo" pour avoir un aperçu. j'ai l'impression que je n'ai pas de retour de ma fonction "getAll()"

Code :
  1. ....
  2. <?php
  3. require('outils/config_rdq.php');
  4. require('outils/date.php');
  5. $date = new Date();
  6. $year = date('Y');
  7. $events = $date->getEvents($year);
  8. print_r($events);
  9. $dates = $date->getAll($year);
  10. echo '<br />';
  11. print_r($dates);
  12. ?>
  13. <div class="carre">
  14.     <div class="periods">
  15.         <div class="year"><?php echo $year; ?></div>
  16.         <div class="months">
  17.             <ul>
  18. ....


 
le print_r($events); m'affiche bien le contenu de la variable
mais par contre pour print_r($dates) je n'ai rien qui s'affiche et je n'ai plus rien sur ma page ensuite...

Reply

Marsh Posté le 08-01-2015 à 17:13:59    

Citation :

mais par contre pour print_r($dates) je n'ai rien qui s'affiche et je n'ai plus rien sur ma page ensuite...


 
entoures ton code d'un try catch pour voir :)
 

Code :
  1. try {
  2.     $date = new Date();
  3.     $year = date('Y');
  4.     $events = $date->getEvents($year);
  5.     print_r($events);
  6.     $dates = $date->getAll($year);
  7. } catch (Exception $e) {
  8.     echo $e->getMessage();
  9.     exit(1);
  10. }

Reply

Marsh Posté le 08-01-2015 à 17:49:14    

Le reporting_error est pas à 0 par hasard sur le serveur de prod ? Si c'est le cas, les erreurs sont masquées, du coup, tu risque pas de voir les msg d'erreur :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 09-01-2015 à 09:42:37    

kokola a écrit :

Citation :

mais par contre pour print_r($dates) je n'ai rien qui s'affiche et je n'ai plus rien sur ma page ensuite...


 
entoures ton code d'un try catch pour voir :)
 

Code :
  1. try {
  2.     $date = new Date();
  3.     $year = date('Y');
  4.     $events = $date->getEvents($year);
  5.     print_r($events);
  6.     $dates = $date->getAll($year);
  7. } catch (Exception $e) {
  8.     echo $e->getMessage();
  9.     exit(1);
  10. }



 
Voici le message d'erreur :
 

Code :
  1. DateTime::__construct(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting 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 'CET/1.0/no DST' instead


je viens de modifier au niveau de ma fonction getAll() et ajouté dans DateTime() ceci en plus :

Code :
  1. function getAll($year){
  2.             $r = array();
  3.             $date = new DateTime($year.'-01-01',new DateTimeZone('Europe/Paris'));
  4.             while($date->format('Y') <= $year){


 
et ça à l'air de fonctionner maintenant... merci!

Reply

Marsh Posté le 09-01-2015 à 10:37:23    

Comme quoi, t'avais bien un msg d'erreur mais pas affiché ;) En prod, ça peut se comprendre pour une question de sécurité ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed