Senshi86
Erfahrenes Mitglied
Hi @all,
begebe mich nach etwas längerer Pause wieder an PHP ran und bin gerade dabei ein Videotutorial durch zu machen um mein Wissen noch mal aufzufrischen. Dabei bin ich jetzt über folgenden Stolperstein gefallen:
Ich habe folgende Ordner-/Dateianordnung:
/Hauptverzeichnis/includes/config.php
/Hauptverzeichnis/includes/database.php
/Hauptverzeichnis/public/index.php
Soweit so gut.
In der Config sind mittels define() die Datenbankverbindungsdaten definiert.
In die database.php binde ich per require_once() die config.php ein.
In die index.php binde ich dann per require_once() die database.php ein.
Jetzt folgendes Phenomen:
1. Wie es gehen sollte
database.php : require_once('config.php')
index.php : require_once('../includes/database.php')
Ergebnis: Wenn ich aus database.php heraus das Connect über die Konstanten, die in config.php definiert wurden (bzw. definiert werden sollten), machen will, bekomme ich die Meldung das der Name der Konstante kein gültiger Datenbankserver ist (logisch, stellt sich mir jetzt die Frage, warum hat er es nicht durch den korrekten Wert ersetzt?). In einer Abfrage der Konstanten in der index.php mittels defined() gibt es mir ein nicht deklariert aus. Das require_once() bringt mir aber auch keine Fehlermeldung beim Einbinden, das sollte also funktioniert haben.
2. Wie es geht
database.php : require_once('../includes/config.php')
index.php : require_once('../includes/database.php')
Ergebnis : Datenbankverbindung funktioniert, Abfrage auf defined() in index.php gibt true zurück
3. Wie es nicht geht (war einfach zum prüfen ob require auch wirklich nen Fehler bei fehlender Datei ausgibt ^^ )
database.php : require_once('bla.php')
index.php : require_once('../includes/database.php')
Ergebnis: Fatal error beim require_once() in der database.php
In dem Video funktioniert das erste Beispiel wunderbar, die Datei scheint er ja auch bei mir zu finden, jedoch definiert er aus mir unbekannten Gründen die Konstanten nicht wenn ich den Pfad nicht komplett angegeben habe
Gibt es da irgendwelche Einstellungen die noch vorgenommen werden müssen, z.b. in Apache oder bei PHP?
Klar könnte man jetzt sagen, arbeite doch einfach mit der kompletten Pfadangabe, aber ich kann mich noch gut daran erinnern das ich mal die Situation hatte, dass z.B. ein Adminbereich noch eine Ebene tiefer verschachtelt war und auf eben diese includes zugreifen sollte, in diesem Fall passen dann aber die Pfadangaben in der database.php nicht mehr.
Ich hab auch mehrmals noch mal den Code aus dem Tutorial mit dem meinigen verglichen und die sind definitiv identisch (sieht man von ein paar Formatierungsunterschieden ab).
Suche war bisher leider nicht sonderlich erfolgreich, hoffe daher das mir hier jemand helfen kann
Danke und Gruß
Marcel
begebe mich nach etwas längerer Pause wieder an PHP ran und bin gerade dabei ein Videotutorial durch zu machen um mein Wissen noch mal aufzufrischen. Dabei bin ich jetzt über folgenden Stolperstein gefallen:
Ich habe folgende Ordner-/Dateianordnung:
/Hauptverzeichnis/includes/config.php
/Hauptverzeichnis/includes/database.php
/Hauptverzeichnis/public/index.php
Soweit so gut.
In der Config sind mittels define() die Datenbankverbindungsdaten definiert.
In die database.php binde ich per require_once() die config.php ein.
In die index.php binde ich dann per require_once() die database.php ein.
Jetzt folgendes Phenomen:
1. Wie es gehen sollte
database.php : require_once('config.php')
index.php : require_once('../includes/database.php')
Ergebnis: Wenn ich aus database.php heraus das Connect über die Konstanten, die in config.php definiert wurden (bzw. definiert werden sollten), machen will, bekomme ich die Meldung das der Name der Konstante kein gültiger Datenbankserver ist (logisch, stellt sich mir jetzt die Frage, warum hat er es nicht durch den korrekten Wert ersetzt?). In einer Abfrage der Konstanten in der index.php mittels defined() gibt es mir ein nicht deklariert aus. Das require_once() bringt mir aber auch keine Fehlermeldung beim Einbinden, das sollte also funktioniert haben.
2. Wie es geht
database.php : require_once('../includes/config.php')
index.php : require_once('../includes/database.php')
Ergebnis : Datenbankverbindung funktioniert, Abfrage auf defined() in index.php gibt true zurück
3. Wie es nicht geht (war einfach zum prüfen ob require auch wirklich nen Fehler bei fehlender Datei ausgibt ^^ )
database.php : require_once('bla.php')
index.php : require_once('../includes/database.php')
Ergebnis: Fatal error beim require_once() in der database.php
In dem Video funktioniert das erste Beispiel wunderbar, die Datei scheint er ja auch bei mir zu finden, jedoch definiert er aus mir unbekannten Gründen die Konstanten nicht wenn ich den Pfad nicht komplett angegeben habe
Gibt es da irgendwelche Einstellungen die noch vorgenommen werden müssen, z.b. in Apache oder bei PHP?
Klar könnte man jetzt sagen, arbeite doch einfach mit der kompletten Pfadangabe, aber ich kann mich noch gut daran erinnern das ich mal die Situation hatte, dass z.B. ein Adminbereich noch eine Ebene tiefer verschachtelt war und auf eben diese includes zugreifen sollte, in diesem Fall passen dann aber die Pfadangaben in der database.php nicht mehr.
Ich hab auch mehrmals noch mal den Code aus dem Tutorial mit dem meinigen verglichen und die sind definitiv identisch (sieht man von ein paar Formatierungsunterschieden ab).
Suche war bisher leider nicht sonderlich erfolgreich, hoffe daher das mir hier jemand helfen kann
Danke und Gruß
Marcel