Question

Lors de l'utilisation de la fonction php include, l'inclusion est exécutée avec succès, mais elle génère également un caractère avant que la sortie de l'inclusion ne soit émise, le caractère est de valeur hexadécimale 3F et je n'ai aucune idée d'où il vient, bien qu'il semble se produire avec chaque inclusion.

Au début, je pensais qu'il s'agissait d'un encodage de fichiers, mais cela ne semble pas poser de problème.J'ai créé un cas de test pour le démontrer :(le lien ne fonctionne plus) http://driveefficiently.com/testinclude.php ce fichier est constitué uniquement de :

<? include("include.inc"); ?>

et include.inc se compose uniquement de :

<? echo ("hello, world"); ?> 

et pourtant, le résultat est : "?Bonjour le monde" où le ?est un caractère avec une valeur aléatoire.C'est cette valeur dont je ne connais pas l'origine et qui fout parfois un peu en l'air mes sites.

Des idées d'où cela pourrait venir ?Au début, je pensais que cela pourrait être lié à l'encodage des fichiers, mais je ne pense pas que ce soit un problème.

Était-ce utile?

La solution

Ce que vous voyez est une marque d'ordre d'octets UTF-8 :

La représentation UTF-8 de la nomenclature est la séquence d'octets EF BB BF, qui apparaît sous la forme de caractères ISO-8859-1 dans la plupart des éditeurs de texte et navigateurs Web non préparés à gérer UTF-8.

Marque d'ordre des octets sur Wikipédia

PHP ne comprend pas que ces caractères doivent être "cachés" et les envoie au navigateur comme s'il s'agissait de caractères normaux.Pour vous en débarrasser, vous devrez ouvrir le fichier à l'aide d'un éditeur de texte "approprié" qui vous permettra d'enregistrer le fichier au format UTF-8 sans la nomenclature principale.

Vous pouvez en savoir plus sur ce problème ici

Autres conseils

Votre serveur web (ou votre éditeur de texte) inclut apparemment un Nomenclature dans le document.Je ne vois pas le caractère malveillant dans mon navigateur, sauf lorsque je règle explicitement l'encodage du site sur Latin-1.Ensuite, je vois deux (!) Nomenclatures UTF-8.

/MODIFIER:Du fait qu'il y a deux Nomenclatures J'en conclus que la nomenclature est effectivement incluse par votre éditeur au début du fichier.Quel éditeur utilisez-vous ?Si vous utilisez Visual Studio, vous devez dire « Enregistrer sous … » dans le menu Fichier puis choisir le bouton « Enregistrer avec encodage… ».Là, choisissez « UTF-8 sans BOM » ou quelque chose de similaire.

Il n'apparaît pas sur la page rendue dans Firefox ou IE, mais vous pouvez voir le personnage amusant lorsque vous affichez la source dans IE.

enter image description here

Est-ce sur une machine Linux ?Pourriez-vous rechercher et remplacer par vim ou sed pour voir si vous pouvez vous débarrasser du 3F de cette façon ?

Si c'est sous Windows, essayez d'ouvrir include.inc avec le Bloc-notes pour voir si le caractère amusant est visible et peut être supprimé.

Je serais également curieux de voir ce qui se passe si vous copiez le code hors de l'inclusion et que vous l'exécutez tout seul.

Caractère 3F en fait est le point d'interrogation, il ne s'affiche pas seulement comme tel.

J'obtiens les mêmes résultats que Thomas, aucun point d'interrogation n'apparaît.

En théorie, cela pourrait être un problème avec un proxy Web, mais je suis enclin à soupçonner un point d'interrogation parasite dans votre balisage PHP... que vous avez peut-être déjà corrigé afin que nous ne voyions pas le problème.

Je vois hello, world sur la page à laquelle vous avez lié.Aucun problème que je vois...

J'utilise Firefox 3.0.1 et Windows XP.Quel navigateur/OS utilisez-vous ?C'est peut-être là le problème.

Je serais également curieux de voir ce qui se passe si vous copiez le code de l'inclusion et que vous l'exécutez seul.

Marque:il s'agit d'une solution d'hébergement partagé, je ne peux donc pas accéder au shell au fichier.Cependant, comme vous pouvez le constater ici, il n'y a aucun caractère qui ne devrait pas être là, et exécuter le même fichier en tant que script ne produit pas ce caractère.(La société d'hébergement partagé n'a été d'aucune aide, me disant continuellement qu'il s'agit d'un problème de navigateur).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top