Voici mon dossier. Je veux le rediriger, mais rien ne se passe. Pour vérifier ce qui se passe, j'ai ajouté un écho avant la partie en-tête.
Il ne génère ni erreur ni redirection vers index.php. Qu'est-ce qui ne va pas? J'ai activé/désactivé la mise en mémoire tampon de la sortie, mais rien ne la fait rediriger. Que puis-je faire?
<?
error_reporting(E_ALL);
echo 'This is an error';
header("Location: login.php");
die();
?>
Merci
Je me suis rappelé que j'avais installé xDebug sur l'environnement de test réel et après l'avoir googlé, j'ai trouvé ce site: http://bugs.xdebug.org/view.php?id=532
Je vais donc télécharger la dernière version de xDebug et changer le php.ini en conséquence pour le nouveau fichier et tout fonctionne comme un charme. Des en-têtes sont envoyés - la redécision est effectuée et des erreurs sont affichées.
Merci à tous pour votre aide!
De documentation PHP :
header()
doit être appelée avant d'envoyer une sortie réelle, soit par des balises HTML normales, des lignes vides dans un fichier, soit à partir de PHP.
Et dans votre cas, vous utilisez echo
avant header()
Avez-vous activé les balises courtes? essayez-le avec la balise longue <?php
:
<?php
error_reporting(E_ALL);
header("Location: login.php");
die();
?>
Les erreurs d'affichage sont-elles activées?
@ Gumbo - C'est sûr!
eh bien, ce n'est pas le cas. car
Pour vérifier ce qui se passe, j'ai ajouté un écho avant la partie en-tête.
si vous aviez display_errors activé, cela afficherait une erreur, au moins lorsque vous turned output buffering on
.
Donc, tout d'abord, assurez-vous que vous pouvez voir les messages d'erreur.
imprimez simplement une variable non définie,
error_reporting(E_ALL);
echo $undef9306;
Je suis sûr que vous ne le verrez pas. Vous devez donc activer l'affichage des erreurs
Ensuite, côté serveur, vous pouvez utiliser la fonction headers_sent()
pour voir si des en-têtes ont été envoyés. Côté client, utilisez le renifleur HTTP pour voir si quelque chose a été envoyé
Et vérifiez votre fichier pour la nomenclature.