Position actuelle: Accueil> Derniers articles> Comment déboguer le paramètre en-tête () est efficace

Comment déboguer le paramètre en-tête () est efficace

M66 2025-06-04

Dans la programmation PHP, la fonction d'en-tête () est généralement utilisée pour envoyer des en-têtes HTTP bruts, en particulier lors de la réorientation de la page. Les usages courants incluent la redirection de pages, les paramètres de type de contenu, etc. Bien que la fonction d'en-tête () soit puissante, dans le développement réel, les développeurs rencontrent souvent le problème que l'en-tête HTTP défini n'est pas efficace. Cet article explorera comment vérifier et déboguer les paramètres de la fonction d'en-tête () dans PHP pour s'assurer qu'il prend effet correctement.

1. Vérifiez le tampon de sortie

La fonction d'en-tête () doit être appelée avant de sortir quoi que ce soit. Si le script a sorti quelque chose (y compris les espaces, les pauses de ligne ou les balises HTML, etc.) avant d'appeler Header () , PHP ne définira pas correctement l'en-tête HTTP.

Vous pouvez vérifier si le tampon de sortie est activé par les méthodes suivantes pour éviter la sortie du contenu à l'avance:

 ob_start(); // Allumez le tampon de sortie
// Autres codes
header("Location: http://m66.net"); // Réorienter
ob_end_flush(); // Contenu du tampon de sortie et fermeture

ob_start () permettra le tampon de sortie, de sorte que tout le contenu de sortie est temporairement enregistré dans le tampon et ne sera pas sorti vers le navigateur tant que le script n'est pas exécuté.

2. Utilisez la fonction en-têtes_sent () pour vérifier

Si vous n'êtes pas sûr de savoir si le contenu a été sorti, vous pouvez utiliser la fonction Header_Sent () pour vérifier si le contenu a été sorti. Cette fonction renvoie une valeur booléenne indiquant si la sortie s'est produite.

 if (headers_sent($file, $line)) {
    echo "Headers already sent in $file on line $line";
} else {
    header("Location: http://m66.net"); // Réorienter
}

Si en headers_sent () renvoie true , cela signifie que PHP a sorti le contenu avant d'appeler l'en-tête () , provoquant l'échec du paramètre d'en-tête HTTP. Les fichiers de sortie et les numéros de ligne aideront les développeurs à localiser la cause profonde du problème.

3. Vérifiez les paramètres de la fonction d'en-tête ()

Assurez-vous que les paramètres transmis à la fonction d'en-tête () sont corrects et comme prévu. Par exemple, si une redirection de page est effectuée, l'URL doit être valide et correctement formatée. Si l'URL utilise un chemin relatif, assurez-vous qu'il correspond au chemin de la page actuel. Si les noms de domaine externes sont impliqués, assurez-vous que le nom de domaine est correct, comme indiqué ci-dessous:

 header("Location: http://m66.net/somepage.php");
exit(); // utiliser exit() Stop Exécution du script,确保Réorienter生效

4. Confirmer les paramètres de configuration PHP

Certaines configurations PHP peuvent affecter le comportement de la fonction d'en-tête () , en particulier dans certaines configurations de serveur. Par exemple, le paramètre Output_Buffering peut affecter l'envoi d'en-têtes HTTP. Vous pouvez vérifier les paramètres pertinents dans php.ini pour confirmer s'il existe des éléments de configuration qui empêchent le headr () de fonctionner correctement.

 output_buffering = On

Si Output_Buffering est défini sur ON , PHP stockera tous les contenus de sortie dans le tampon avant d'envoyer la réponse jusqu'à l'exécution du script.

5. Journal de débogage

L'activation des journaux d'erreur PHP peut aider à déboguer correctement l'exécution de la fonction en-tête () . En vérifiant le journal des erreurs, vous pouvez voir s'il y a des avertissements ou des erreurs liés à la tête.

Activer la journalisation des erreurs en php.ini :

 log_errors = On
error_log = /path/to/error.log

Si la journalisation est activée, PHP enregistrera les erreurs dans l'exécution, aidant les développeurs à comprendre s'il y a un problème lors de l'appel d'en-tête () .

6. Utilisez des outils de développeur de navigateur

Lorsque la fonction d'en-tête () est appelée, les informations d'en-tête de réponse reçues par le navigateur peuvent être visualisées via les outils de développement du navigateur. Dans Chrome Browser, appuyez sur F12 pour ouvrir l'outil de développeur, passer à l'onglet "réseau" et après avoir rafraîchi la page, vous pouvez voir l'en-tête de demande et de réponse HTTP envoyée.

Si la page ne redirige pas ou ne définit pas le type de contenu comme prévu, vous pouvez vérifier si l'en-tête de réponse contient les informations d'en-tête () que vous définissez. Sinon, cela signifie que le script PHP n'envoie pas correctement l'en-tête.

7. Exécution du script de sortie

Dans certains cas, après avoir appelé en-tête () , vous devez utiliser la fonction exit () ou die () pour arrêter l'exécution du script pour vous assurer que la redirection ou d'autres opérations d'en-tête peuvent prendre effet immédiatement.

 header("Location: http://m66.net");
exit();

Si exit () n'est pas utilisé, le script peut continuer à s'exécuter, ce qui fait écraser la sortie ultérieure de l'en-tête HTTP précédemment défini.

Résumer

Lors de la vérification et de la débogage de la fonction d'en-tête () dans PHP, vous pouvez dépanner à partir de plusieurs angles, y compris la vérification du tampon de sortie, en utilisant la fonction en tête_sent () , en vérifiant si les paramètres de fonction sont corrects, en configurant les paramètres PHP et en visualisant les en-têtes de réponse du navigateur. Grâce à ces méthodes, le problème que le réglage de la fonction d'en-tête () n'est pas efficace peut être résolu efficacement, garantissant que les scripts PHP fonctionnent comme prévu.