include wird wie echo ausgeben

TinniTuss

Erfahrenes Mitglied
Hallo Leute

Ursprünglich wollte ich meine MySQL-Zugangsdaten per 'include' einbauen, aber das hat schon nicht funktioniert. Dann habe ich das Problem immer weiter reduziert, bis es sich folgendermaßen darstellt.

In einer Include-Datei (MyInclude.html) steht nichts anderes als:
$hallo = "Guten Morgen";

Wenn ich diese Include-Datei in mein php einbaue, bekomme ich nur genau diese Zeile angezeigt, die Variable bleibt leer.

<?php
include "MyInclude.html";
echo $hallo;
?>

Ich bin nicht besonders fit in PHP, aber mit 'include hatte ich bisher keine Probleme. Ich nehme an, dass da irgendwo ein klitzekleiner Denkfehler steckt.

Bitte Hilfe

HH.
 
Hab das noch nicht ausprobiert, aber meine Vermutung liegt darin, das .html-Dateien nicht geparst werden, selbst wenn sie in einer PHP-Datei included werden. Mach aus der MyInclude.html mal MyInclude.php, ändere den include()-Befehl entsprechend ab und probier es noch einmal.
 
Hallo Saftmeister


Ich habe bereits einige Dateiendungen probiert, sogar .qqq.

.html funktionierte eigentlich immer.

HH.
 
Wenn du schreibst:

Ich habe bereits einige Dateiendungen probiert, sogar .qqq.

dann geh ich erstmal davon aus, das du es nicht weißt. Ausprobieren hilft da nicht. Man muss es wissen und verstehen. Also:

Der Webserver nimmt die URL in Empfang und prüft, ob die Datei in seinem lokalen Dateisystem existiert. Dann schaut er in seiner Konfiguration nach, ob mit dem Mime-Type (AddType-Direktive) also mit der Datei-Endung eine bestimmte Aktion (bei .php in der Regel also application/x-httpd-php Verknüpft ist. Dann reicht er die Datei an das entsprechende Modul weiter (LoadModule php5_module /pfad/zu/modphp.so bspw.). Dort wird die Datei bearbeitet und das Resultat an den Webserver als Output zurück geliefert. Dieser reicht den Output an den Client (Browser) weiter, welcher ihn rendert und anzeigt.

Wenn du nun eine Datei .html hast, welche normalerweise mit dem Typ text/html verknüpft sind, dann wird diese nicht an den Parser geschickt sondern direkt zum Client.


Nun aber zurück zu deiner Frage:

Setz doch mal in deiner MyInclude.html php-Tags um den Code:

PHP:
<?php
$hallo = "Guten Morgen";
?>

Der PHP-Parser parst nämlich nur Code, der innerhalb seiner bekannten Tags ist.
 
Hallo,

was steht den in deiner "MyInclude.xx"?
Hast du das die Daten als Variablen gespeichert?
Verändre am besten mal die Daten und poste den Inhalt.

Gruß
Daniel

EDIT: Sorry, hat sich mit saftmeister überschnitten.
 
Steht das:
$hallo = "Guten Morgen";
in der zu includierenden Datei in PHP-Klammern?

Sonst würde ich das mal ausprobieren und wie schon gesagt die Datei als .php speichern.
 
Hallo Fauchi95
Hallo burzelmann
Hallo Saftmeister

Es funktioniert, nachdem ich den Include-Code in php-Tags gepackt habe.
Aber jetzt würde ich auch noch gern wissen warum.

Ich habe noch nie etwas das per 'include' eingebunden werden soll in php-Tags gesteckt.

Für mich stellt sich das so dar, dass ich nun praktisch doppelt 'vertagged' habe.

einmal im Haupt-php...
...und dann nochmal im Include.

oder?

HH.
 
Befragen wir doch mal das Manual zum Thema include():

When a file is included, parsing drops out of PHP mode and into HTML mode at the beginning of the target file, and resumes again at the end. For this reason, any code inside the target file which should be executed as PHP code must be enclosed within valid PHP start and end tags.

Auf deutsch:

Wenn eine Datei mittels include() eingebunden wird, wird der PHP-Mode ausgeschaltet und statt dessen der HTML-Mode eingeschaltet. Am Ende der eingebundenen Datei wird der HTML-Code wieder in PHP zurückgeschaltet. Aus diesem Grund muss jeglicher PHP-Code innerhalb der eingebundenen Datei in gültige PHP-Start- und -End-Tags gesetzt werden, um ihn als ausführbaren PHP-Code zu deklarieren.

Das war jetzt sehr frei aber sinngemäßt übersetzt.
 
Zurück