Frage von alphaderalphas, 25

php include absolut?

Hi,

Ich habe mehrer Verzeichnisse auf meinem Server und ich will in jede Datei (egal, welches Verzeichnis) das gleiche include packen.

Bis jetzt sieht es so aus:

include("/users/name/www/include/verbindung.php"); 

Folgendes funktioniert nicht:

include("/include/verbindung.php"); 

-

Kann ich den oberen include-Befehl abkürzen, bzw. ist es möglich, das Userverzeichnis abzufragen (ist /users/name/www/ in irgend einem vorgegebenen String gespeichert?)*

Antwort
von Plueschtier94, 25

Schreibe eine PHP function, die du in eine eigene Datei legst oder wenn schon vorhanden in die Datei wo du deine PHP Functions hast.

function include_verbindung(){
    include(Pfad der Verbindung.php)
}

In jeder Datei machst du nun am anfang folgenden PHP Aufruf:

include_verbindung();
Kommentar von alphaderalphas ,

naja, aber dann habe ich ja mit der Datei, in der die Funktion drin ist doch das selbe Problem mit dem Pfad...

Kommentar von Plueschtier94 ,

einmal den Pfad anpassen.
Der ändert sich ja nicht mehr. 

Die Datei wo die Functions liegt, liegt z.B im Ordner "Functions".
Die Verbindung.php liegt im Ordner "include" zwei ebenen unter der Functions.

Dann ist der Pfad folgender: 

include(../../include/verbindung.php)
Kommentar von Plueschtier94 ,

Sorry aber ich kenne deine Ordnerstruktur nicht, sonst könnte ich dir das natürlich sofort nennen. 

Kommentar von Broco ,

Was ist denn bitte der Sinn davon, einen Include in eine Funktion zu packen und dann die Funktion aufzurufen, wenn du auch direkt den Include machen kannst? Das macht absolut das gleiche, ist nur nutzloser extracode

Kommentar von Plueschtier94 ,

Der Sinn dahinter wird erst bei größeren Ordnerstrukturen klar. 
Wenn du in jeder Ordnerstruktur den Pfad anpassen musst ist das lästig + fehleranfällig. 

Dafür nutze ich eine Funktion, in der die Pfade zu den Dateien stehen, die ich dort benötige.
Da handelt es sich um mehrere Dateien die geladen werden.
DB Connection, CSS, JS etc. Und das alles mit einer Code Zeile. 

Heißt Ersparnis, und nicht wie du geschrieben hast, nutzloser Extracode. 

Antwort
von RakonDark, 12

schau mal ob du mit


include(dirname($_SERVER['DOCUMENT_ROOT']) ."/pfadetcetc/datei.php");

weiterkommst .

Achtung , guck dir das ergebnis an bei Windows Servern , wegen backslashes.

Antwort
von TeeTier, 7

Der zweite Pfad ist NICHT relativ, sondern absolut! Deshalb kann es ja gar nicht funktionieren. :)

Entweder du entfernst das erste Slash, oder du setzt noch einen Punkt davor. Dann hast du auch einen relativen Pfad:

include("include/verbindung.php");
// ... oder ...

include("./include/verbindung.php");

Viel Spaß! :)

Kommentar von Broco ,

Einzige richtige Antwort. Ansonsten geht noch .. für einen Ordner über dem aktuellen.

Keine passende Antwort gefunden?

Fragen Sie die Community