J'ai rencontré un BUG très étrange aujourd'hui, c'est-à-dire que j'ai écrit un programme PHP qui s'exécute normalement localement, mais lorsqu'il est publié sur le serveur de la partie A, il y a un BUG qui indique que la vérification le code ne peut pas être affiché.
Recommandations associées : "Tutoriel ThinkPHP"
La manifestation spécifique est qu'une petite icône d'image fissurée s'affiche sur le navigateur Chrome . Cliquez avec le bouton droit sur l'image pour l'ouvrir dans une nouvelle fenêtre. Il s'agit toujours d'une petite image fissurée, pas d'un message d'erreur (lorsque l'extension xdebug et le rapport d'erreurs PHP sont activés). Si c'est le cas, cela signifie qu'il n'y a pas de problème. le routage de l'URL du code de vérification et le code de logique métier. Il y a un problème avec le processus de génération du code de vérification. Mon idée de débogage est la suivante :
1 Vérifiez si la bibliothèque GD est installée correctement. apt ou pecl pour l'installer. Windows recommande d'utiliser l'environnement intégré phpStudy, il a intégré les extensions couramment utilisées, faites un clic droit pour les ouvrir. (Applicable aux situations où l'image du code de vérification affiche un message d'erreur et un tas de caractères tronqués lorsqu'elle s'ouvre dans une nouvelle fenêtre. S'il y a un message d'erreur, veuillez déboguer en fonction du message d'erreur)
2. Vérifiez si la police appelée par le code de vérification est manquante. Certaines polices appelées par les composants du code de vérification ne sont pas installées sur l'ordinateur cible. Cela nécessite une analyse du code source du module de code de vérification. J'utilise le think-captcha officiel de ThinkPHP. Vous pouvez trouver son code source sur suppliertopthinkthink-captchaassets. Vous pouvez voir ici sur suppliertopthinkthink-captchaassets que ce plug-in de code de vérification est livré avec sa propre police, le code de vérification de ThinkPHP est donc fondamentalement inutile. problème de police, s'il s'agit d'un autre plug-in de code de vérification, vous devez toujours vérifier cet endroit.
3. Téléchargez l'image du code de vérification du buggy et l'image du code de vérification normal du test local, utilisez le Bloc-notes pour afficher et comparer.
L'image ci-dessus est un bloc-notes de l'image du code de vérification dans l'environnement local. Nous utilisons un éditeur hexadécimal plus professionnel pour analyser les différences de fichiers.
Comme le montre l'image, nous avons constaté que le mauvais fichier bad a exactement le même contenu à l'exception de l'ajout de EF BB BF et d'autres chiffres devant lui. montre que PHP a trop d'erreurs lors du rendu de l'image. Ces textes ont été rendus. Quant à la raison, je suppose qu'il n'y a peut-être pas d'éditeur de code professionnel sur le serveur, donc le personnel d'exploitation et de maintenance a utilisé le Bloc-notes Windows ordinaire pour modifier. le code PHP, entraînant l'ajout de cet entête BOM.
Si c'est la troisième raison, il existe deux solutions. La première consiste à utiliser ob_clean pour effacer le tampon de sortie de php avant d'appeler le code d'image de sortie imagepng du code de vérification. Il existe également l'utilisation de certains outils pour supprimer la nomenclature du code par lots.
J'utilise ob_clean ici, j'ajoute ob_clean() avant la ligne 203 de Captcha.php, le fichier principal de think-captcha, pour que cela puisse être résolu une fois pour toutes . Si vous avez des exigences strictes en matière de performances et de stabilité, il est recommandé d'utiliser des outils pour supprimer la nomenclature par lots, ce qui est plus sûr. Parallèlement, il est également recommandé d'installer à tout moment un éditeur de code professionnel tel que editplus sur le serveur. N'utilisez pas le Bloc-notes Windows pour modifier le code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!