2009-03-17 6 views
3

Je suis tombé sur la pecularity suivante:PHP ne peut pas lire les fichiers contenant du code PHP sous forme de fichiers texte

$ handle = fopen (realpath ("../ dossier/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 imprime le contenu du fichier non vide sur la page. En outre, file.php n'est jamais exécuté, donc je me demande pourquoi c'est le problème.

Je suppose que d'une manière ou d'une autre, Apache ou PHP ne permet pas de lire des fichiers contenant des balises php PHP comme du texte.

Comment puis-je l'activer pour mon fichier particulier (bien sûr le faire serait globalement non sécurisé)?

En utilisant 5.2.x PHP et Apache 2.0

+0

Intéressant ... Je viens aussi de le remarquer. Il semble que tout fichier commençant par

+0

avez-vous une erreur sur le fopen() ou pendant la lecture? Si sur la lecture, quel code utilisez-vous pour lire le fichier? – jonstjohn

+0

Tout le code est le problème, j'ai utilisé fopen, mais file_get_contents provoque le même comportement. – AlexA

Répondre

11

Je l'ai eu. J'utilisais Google Chrome pour déboguer la page, et je me suis rendu compte que lors de la visualisation de la source, Chrome cache les balises PHP pour une raison quelconque. J'ai couru le même test sur Firefox, et la visualisation de la source a prouvé 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 (à la fois sur Chrome et Firefox):

testing testing3 

Voir la Source (en anglais) ing firefox):

testing <?php testing2 ?> testing3 

Voir le texte source (en utilisant Chrome - Source de mon erreur):

testing testing3 
+0

Vous l'avez vraiment compris. C'était le cas! – AlexA

+1

C'est un tas de boiteux. Firefox avait l'habitude de faire quelque chose de similaire, où il modifierait la source du document lorsque vous avez consulté sourse. (En gros vous montrant le "voici comment j'interprète ce HTML invalide) A cause de cela, j'ai commencé à utiliser curl pour déboguer la sortie HTML –

+0

Droit, merci pour la perspicacité, Alan Avec curl, les choses ne peuvent probablement pas se tromper –

0

file_get_contents (Hmm) travaille pour moi. Est-ce seulement un problème pour fopen?

Edit: quelle erreur obtenez-vous exactement? Etes-vous sûr d'interpréter la sortie correctement?

+0

Peu probable, je viens de tester - file_get_contents() a le même problème pour moi. – AlexA

7

Si vous imprimez le contenu du fichier directement dans la sortie de votre page, un navigateur n'affiche pas le texte entre crochets car il pense qu'il s'agit d'un tag. Servez votre contenu en tant que text/plain ou utilisez la commande "view source" de votre navigateur pour vous assurer que vous regardez ce qui s'y trouve vraiment, et pas seulement ce que le navigateur a choisi d'afficher.

+0

Je suis d'accord. Je suis capable d'imprimer tout sauf les tags à l'intérieur <>. Mais une page de test affiche le bouton qui se trouve dans le fichier php en cours de lecture. – Shoban

+0

Afficher la source dans Google Chrome cache les tags php pour une raison quelconque ... –

0

Wadih M. résolu la question. Les balises PHP cachent toute la sortie de la source PHP dans le navigateur, mais View Source les montre. Merci!

+0

Vous êtes les bienvenus PHP penseur Il suffit de définir la réponse comme une solution (grand signe vert) pour fermer la question. –

-1

renommer le fichier le lire obtenir vos données les changer rerename votre fichier :)

0

J'utilise htmlspecialchars($line);

Il a résolu le problème.

Questions connexes