J'ai aidé quelqu'un à déboguer du code où le message d'erreur était "Jour trop grand". Je sais que cela provient de localtime et du bug Y2038 (la plupart des résultats de recherche sur Google semblent être des gens confrontés à des cookies expirants bien dans le futur).
Il semble que nous ayons 'réglé' le problème en utilisant time pour obtenir la date actuelle. Cependant, étant donné que aucune de nos dates d'origine ne devrait avoir atteint le problème de 2038, je suis sceptique quant au fait que nous ayons réellement résolu le problème...
Y a-t-il d'autres cas que quelqu'un connaît où l'on pourrait rencontrer "jour trop grand" ?
OS est Solaris.
Code d'exemple - le code réel est assez long et la personne avec qui je travaille n'a pas réellement isolé la partie incriminée (c'est pourquoi je crains que le 'correctif' ne soit pas vraiment un correctif). Si je peux compiler quelque chose de concis qui reproduit le problème, je le posterai !
MISE À JOUR
J'ai isolé le bout de code, mis des déclarations d'impression partout et ai résolu le problème...
La ligne de code incriminée était :
$temp = strtotime(localtime());
Cela définissait souvent (mais pas toujours) $temp comme non défini. Il s'avère que même lorsque $temp était défini, il ne l'était pas avec la valeur attendue.
Le hic est que localtime() retourne un tableau dans la plupart des contextes ... et c'est ce qui perturbe l'appel à strtotime.
En changeant cela en :
$ltime = localtime;
$temp = strtotime($ltime);
le problème disparaît.
Bien sûr, encore mieux, il suffit d'utiliser :
$temp = time;