La colonne suivante du didacticiel du framework thinkphp vous présentera la solution au problème selon lequel le code de vérification ThinkPHP n'est pas affiché. J'espère que cela sera utile aux amis dans le besoin. !
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 que le code de vérification ne peut pas être affiché.
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. image fissurée, pas de 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 avec le routage de l'URL du code de vérification et le code de logique métier, mais 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 correctement installée. Il est recommandé d'utiliser yum, apt ou pecl pour Linux, il est recommandé d'utiliser phpStudy, un logiciel intégré. Il intègre des extensions communes et peut être ouvert par un simple clic droit de la souris. (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 dans suppliertopthinkthink-captchasrc. Vous pouvez voir dans suppliertopthinkthink-captchaassets que ce plug-in de code de vérification est livré avec sa propre police, donc le code de vérification de ThinkPHP n'est fondamentalement pas nécessaire. 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 sauf qu'il y a des chiffres tels que EF BB BF devant lui. que PHP a trop d'erreurs lors du rendu de ces mots, je suppose que la raison est qu'il n'y a 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, ce qui a entraîné le résultat. ajout de cet en-tête de nomenclature.
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!