Comportement étrange d'un Warning avec json_encode()

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 : Comportement étrange d'un Warning avec json_encode()

Re: Comportement étrange d'un Warning avec json_encode()

par Mazarini » 21 nov. 2012, 15:08

J'ai eu des problèmes de paramètres des erreurs et j'ai fini de les régler en testant avec un script genre :
<?PHP
$toto[titi] = $tata;
?>
+ l'utilisation d'une fonction obsolète.

(Edit suite edit précédent)

Re: Comportement étrange d'un Warning avec json_encode()

par Saian » 21 nov. 2012, 14:47

C'est pas normal de ne pas voir les warning avec un error_reporting(-1) ?

EDIT
Après lecture de la doc sur error_reporting je comprends le problème (error_reporting(-1) étant rapporter toutes les erreurs) mais de la à l'expliquer qu'elle ne s'affiche jamais à l'écran... j'ai pas un début d'idée pour le moment.

RE-EDIT
Chez moi ça ne génère pas d'erreur, juste que json_encode retourne null (ça expliquerai que tu n'ai jamais d'erreur qui s'affiche à l'écran).
D'ailleurs sur la doc ils disent que ça retourne FALSE quand une erreur survient.
C'est quoi l'erreur que tu arrives à avoir dans ton log ?
Et pour le display_error ça n'agit pas sur mon fichier de log ou les erreurs sont systématiquement reportées. Par contre ça agit bien sur l'affichage à l'écran.

Comportement étrange d'un Warning avec json_encode()

par BehoDouble » 21 nov. 2012, 14:43

En considérant le code suivant dans lequel vous pourrez remplacer 'chemin_de_votre_fichier_de_log' par un chemin de fichier valide :

Code : Tout sélectionner

<?php error_reporting(-1); ini_set('display_errors', 1); ini_set('log_errors', 1); ini_set('error_log', 'chemin_de_votre_fichier_de_log'); $data = chr(233); $json = json_encode($data); ?>
Ce code doit normalement générer un Warning car $data n'est pas une séquence UTF-8 valide et que json_encode() n'accepte que de l'UTF-8.
Pourtant ce Warning n'apparaît dans le fichier de log que si on met 'display_errors' à 0 et n'apparaît jamais à l'écran que 'display_errors' soit à 0 ou 1.

Si quelqu'un trouve du sens à tout ça j'aimerais bien qu'on m'explique. :D
Si vous n'avez pas ce problème chez vous ça m'intéresse aussi.

J'utilise WampServer 2.2, PHP 5.3.10 sur Windows 7 SP1 64 bits.

Merci.