PHP ne peut pas lire les fichiers contenant du code PHP sous forme de fichiers texte
-
19-08-2019 - |
Question
Je suis tombé sur la particularité suivante:
$ handle = fopen (realpath (" ../ folder / files.php ")), " r ");
ne peut pas lire un fichier, mais dès que je supprime les balises php du fichier, il devient lisible et mes scripts impriment un contenu de fichier non vide sur la page. De plus, file.php n’est jamais exécuté, alors je me demande pourquoi c’est le problème.
J'imagine qu'Apache ou PHP ne permettent pas de lire les fichiers contenant des balises php en tant que texte.
Comment puis-je l'activer pour mon fichier particulier (bien sûr, le faire globalement serait non sécurisé)?
Utilisation de PHP 5.2.x et Apache 2.0
La solution
Je l'ai eu. J'utilisais Google Chrome pour déboguer la page et je me suis rendu compte que, lors de l'affichage du code source, Chrome masquait les balises PHP pour une raison quelconque. J'ai fait le même test sur Firefox et voir la source prouvait que tout allait bien.
Voici les détails du test:
Code:
$fh = fopen("test.php","r");
while ($line = fgets($fh)){
echo $line;
}
Fichier à lire (test.php):
testing <?php testing2 ?> testing3
Rendu (sur Chrome et Firefox):
testing testing3
Voir le source (avec Firefox):
<*>Voir le source (avec Chrome - source de mon erreur):
<*>Autres conseils
Êtes-vous sûr d’interpréter correctement la sortie? Si vous imprimez le contenu du fichier directement sur la sortie de votre page, un navigateur n’affiche pas le texte entre crochets, car il pense que c’est une balise. Diffusez votre contenu comme text/plain
ou utilisez la & Quot; voir la source & Quot; de votre navigateur commande pour vous assurer que vous regardez ce qui est vraiment là et pas seulement ce que le navigateur a choisi d’afficher.
Hmm file_get_contents () travaille pour moi. Est-ce seulement un problème pour le fopen?
Edit: quelle erreur obtenez-vous exactement?
Wadih M. a résolu le problème. Les balises PHP masquent la sortie complète de la source php contenant les balises dans le navigateur, mais View Source les montre. Merci!
J'utilise htmlspecialchars($line);
Cela a résolu le problème.
renommer le fichier lis le obtenir vos données change les renommez votre fichier:)