PHP file_get_contents gibt PHP Code aus!?

27o8

abgemeldet
2 Mai 2006
9.028
933
Kann mir jemand folgendes erklären (habe in Doku nichts gefunden):

Ich habe ein php Script "last_posts.php" habe dies z.B. auf example.com liegen. Wenn ich folgenden Code verwende:

PHP:
<?php
   echo file_get_contents('https://example.com/last_posts.php');
?>

wird, wie gewünscht, die Ausgabe vom php Script ausgegeben. Verwende ich jedoch folgendes verwende:

PHP:
<?php
   echo file_get_contents('./last_posts.php');
?>

wird der Source Code der PHP Datei ausgegeben!? 8O
 
Wenn du die Datei mittels http(s) aufrufst wird die Datei natürlich vom Webserver geparsed. Dies ist nicht so, wenn die Datei direkt eingebunden wird.
 
Nunja, wenn Du die URL abrufst, übernimmt der antwortende Webserver die Auslieferung, das Skript wird also aufgerufen. Im zweiten Fall liest Du eine Datei aus dem lokalen Dateisystem, deshalb kriegst Du nur den reinen Inhalt zurück.
 
Einfach includen geht nicht?
Geht schon, aber mir kommt es so vor als wenn dann die Seite deutlich länger laden würde. Klingt zwar unlogisch, aber rein vom Gefühl her würde ich das schon sagen. :-?

*edit*
Sorry include() funzt doch nicht, wegen Cache Funktion. Kann zwar sein, dass ich es doof gelöst habe, aber es verursacht Probleme. Deshalb hatte ich es auch damals mit file_get_contents() gelöst.

Pseudocode zu meinem Cache welcher wohl Probs macht:

PHP:
if (cache_datei_last_edit() > time()-600)
{
      ob_start();
     // DB Abfragen und Inhalte ausgeben

     file_put_contents ('cache/last_posts.txt', ob_get_flush());    
}else{
    echo file_get_contents('cache/last_posts.txt');
}
Und wenn ich diese Datei nun an der Stelle include verursacht ob_start() wohl Probs :think:

Kann das ganze natürlich auch umschreiben... mach ich mir morgen mal Gedanken drum ;)
 
Zuletzt bearbeitet:
jo ob_end_flush() wär nicht so toll, aber tleilax hats ja berichtigt.
Man sollte nicht müde sein beim antworten ...