error_reporting

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 : error_reporting

par Rei Itchido » 24 janv. 2006, 19:15

Mici :merci:

par naholyr » 24 janv. 2006, 19:05

Sans output-buffering :
echo "truc"; // envoi des entêtes (content-type, etc...) + envoi de "truc".
echo "bidule"; // envoi de "bidule".
// fin du script
Avec output-buffering :
echo "truc"; // mise en buffer de "truc"
echo "bidule"; // mise en buffer de "bidule"
// fin du script + envoi des entêtes + envoi de "trucbidule"

par Rei Itchido » 24 janv. 2006, 18:55

Merci naholyr :)

Je connaissais pas.

Juste un truc : ça met tout dans le buffer puis envoie les en-têtes avant le contenu? Ca ordonne en quelque sorte avant l'output?

par naholyr » 24 janv. 2006, 18:14

Roh tu m'as cassé tout mon effet du coup ><
La directive output_buffering :
; Output buffering allows you to send header lines (including cookies) even
; after you send body content, at the price of slowing PHP's output layer a
; bit. You can enable output buffering during runtime by calling the output
; buffering functions. You can also enable output buffering for all files by
; setting this directive to On. If you wish to limit the size of the buffer
; to a certain size - you can use a maximum number of bytes instead of 'On', as
; a value for this directive (e.g., output_buffering=4096).
output_buffering = Off
Quand cette directive n'est pas à "Off", l'output_buffering est automatique. C'est à dire que les entêtes HTTP et le contenu de la page ne sont envoyées que tout à la fin du script. Donc lorsque que tu fais "echo 'bidule';", les entêtes n'ont pas été envoyées, 'bidule' a simplement été ajouté au buffer, et l'appel à une fonction comme session_start() par la suite ne provoque donc pas l'erreur "headers already sent".

Dans ce cas si aucune erreur n'est affiché, c'est simplement parce qu'il n'y en a pas.

Autre conséquence de l'output-buffering : si on fait une terrible erreur de syntaxe ou autre erreur qui tue le script en cours, au lieu d'avoir l'affichage de l'erreur, on aura simplement une page blanche (voire un avertissement du navigateur "le document ne contient aucune donnée").

par Rei Itchido » 24 janv. 2006, 17:17

J'ai desinstallé la version qui posait problème et le php.ini est parti avec.

Tu peux m'en dire plus stp?

par naholyr » 24 janv. 2006, 17:13

Va voir dans ton php.ini les options de configuration parlant d'output_buffering. La solution y est.

par Rei Itchido » 24 janv. 2006, 16:17

Bon...

Je soupçonne la version 1.7 d'easyPHP d'être buggée. J'ai mis la 1.8 et les alertes s'affichent bien.

par Rei Itchido » 24 janv. 2006, 16:11

Alors là, je m'arrache les cheveux...

Dans une simple page php sans rien d'autre avant ou après, voilà ce que j'arrive à faire sans avoir la moindre alerte :shock:

Code : Tout sélectionner

<?php error_reporting(E_ALL); echo error_reporting(); echo "avant > ".session_id()."<br>"; session_start(); echo "apres > ".session_id()."<br>"; ?>

par Cyrano » 24 janv. 2006, 00:38

Je ne vois pas trop : je viens de faire le test et je me fais "normalement" jeter immédiatement. :-k

par Rei Itchido » 24 janv. 2006, 00:35

Oui, relancé plus d'une fois ^^

Bon et bien ça doit pas venir du serveur mais de mon code (j'inclus des fichiers en amont) où quelque chose doit m'echapper.

Merci pour vos réponses en tout cas.

par Cyrano » 24 janv. 2006, 00:32

Si tu as modifié les directives, as-tu relancé Apache pour que les nouveaux paramètres soient pris en compte ?

par Rei Itchido » 24 janv. 2006, 00:30

Elle est à "on" aussi :?
On est bien d'accord que ce n'est pas normal que rien ne s'affiche?

par Cyrano » 24 janv. 2006, 00:26

Que le error_reporting soit à E_ALL ne servira à rien si la directive display_error est à OFF : à vérifier ;)

par Rei Itchido » 23 janv. 2006, 18:03

Me suis gourré de code...C'est quand les vacances? :x

Ce qui m'etonne en ne donnant aucune alerte c'est ça plutot :

Code : Tout sélectionner

echo "test"; session_start();

par Number » 23 janv. 2006, 17:44

Je penses que Oui, Moi non plus je n'ai aucune erreur ....