2009-03-17 4 views
3

ich auf die folgende pecularity gestolpert:PHP kann nicht lesen Dateien PHP-Code als Textdateien mit

$ = fopen (realpath ("../ folder/files.php") handhaben, "r");

kann eine Datei nicht lesen, aber sobald ich PHP-Tags aus der Datei entfernen, wird es lesbar und meine Skripte druckt nicht leere Datei Inhalt auf der Seite. Auch Datei.php wird nie ausgeführt, also frage ich mich, warum es das Problem ist.

Ich denke, irgendwie Apache oder PHP lässt nicht lesen Dateien mit PHP-Tags PHP als nur Text.

Wie kann ich es für meine bestimmte Datei aktivieren (natürlich wäre es unsicher)?

PHP 5.2.x und Apache 2.0

+0

Interessant ... Ich habe das auch gerade bemerkt. Es scheint, dass jede Datei, die mit

+0

erhalten Sie einen Fehler auf dem fopen() oder während des Leseteils? Wenn Sie beim Lesen welchen Code verwenden, um die Datei zu lesen? – jonstjohn

+0

Jeder Code ist das Problem, ich habe fopen verwendet, aber file_get_contents verursacht das gleiche Verhalten. – AlexA

Antwort

11

Ich habe es. Ich benutzte Google Chrome, um die Seite zu debuggen, und mir wurde klar, dass Chrome bei der Anzeige der Quelle PHP-Tags aus irgendeinem Grund verbirgt. Ich habe denselben Test mit Firefox durchgeführt, und die Quelle hat bewiesen, dass alles in Ordnung ist.

Hier sind die Testdetails:

Code:

$fh = fopen("test.php","r"); 
while ($line = fgets($fh)){ 
echo $line; 
} 

Datei lesen (test.php) werden:

testing <?php testing2 ?> testing3 

Rendering (sowohl auf Chrome und Firefox):

testing testing3 

Quelltext anzeigen (us ing firefox):

testing <?php testing2 ?> testing3 

Quelltext anzeigen (mit Chrome - Quelle meiner Fehler):

testing testing3 
+0

Sie haben es wirklich verstanden. Das war der Fall! – AlexA

+1

Das ist ein Haufen Lahme. Firefox verwendete etwas ähnliches, wo es die Quelle des Dokuments änderte, wenn du Sourse ansiehst. (im Grunde zeige ich Ihnen die "so interpretiere ich diesen ungültigen HTML-Code)" Aus diesem Grund begann ich mit curl, um HTML-Ausgabe zu debuggen. –

+0

Richtig. Danke für die Einsicht, Alan. Mit curl, Dinge können wahrscheinlich nicht schief gehen. –

0

Hmm file_get_contents() ist für mich arbeiten. Ist das Problem nur für fopen?

Edit: Welchen Fehler bekommen Sie genau?

+0

Unwahrscheinlich, ich habe gerade getestet - file_get_contents() hat das gleiche Problem für mich. – AlexA

7

Sind Sie sicher, dass Sie die Ausgabe richtig interpretieren? Wenn Sie den Dateiinhalt direkt auf die Seitenausgabe drucken, zeigt ein Browser keinen Text in spitzen Klammern an, da er denkt, dass es ein Tag ist. Stellen Sie Ihren Inhalt als text/plain zur Verfügung, oder verwenden Sie den Befehl "Quelltext anzeigen" Ihres Browsers, um sicherzustellen, dass Sie sich ansehen, was wirklich da ist und nicht nur, was der Browser ausgewählt hat.

+0

stimme ich zu. Ich bin in der Lage, alles außer den Tags innerhalb <> zu drucken. Aber eine der Testseiten zeigt eine Schaltfläche an, die in der php-Datei gelesen wird. – Shoban

+0

Quelltext in Google Chrome anzeigen verbirgt die PHP-Tags aus irgendeinem Grund ... –

0

Wadih M. löste das Problem. PHP-Tags verbirgt die gesamte Tag-eingeschlossene PHP-Quellausgabe im Browser, aber View Source zeigt sie an. Vielen Dank!

+0

Gern geschehen, PHP-Denker, einfach die Antwort als Lösung setzen (großes grünes Häkchen), um die Frage zu schließen –

-1

die Datei umbenennen lesen sie Ihre Daten erhalten sie Ihre Datei :)

0

rerename ändern I htmlspecialchars($line);

Es löste das Problem verwende.