• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

[PHP] PHP include Datei bezogener Pfad

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Liebe Community!

Ich habe einen PHP include, welcher eine Galerie einbinden soll.
Jetzt werden aber in der includierten Datei weitere Dateien geladen, deren Pfade sich auf eben diese Datei beziehen.

Sprich:

Datei1.php:
Code:
<link rel="stylesheet" type="text/css" href="./stylesheet.css" />
<script type="text/javascript" src="./javascript.js"></script>
<?php echo([I]Galerie-Zeug[/I]); ?>

Datei2.php:
Code:
<?php include(/pfad/pfad/Datei1.php); ?>

Jetzt ist ja klar, dass sich die Pfade zu CSS und JS auf das Verzeichnis von Datei2.php beziehen.
Allerdings liegen diese woanders, was ich auch zwecks Überblick nicht ändern möchte.

Allerdings sollen sich die Pfade zu CSS und JS weiterhin auf Datei1.php beziehen.
Ist das in irgend einer Weise machbar??

Oder muss ich einen anderen Tag anstelle von include() verwenden?


Vielen Dank und liebe Grüße
 

joro

Braeburn
Registriert
12.06.10
Beiträge
45
Hallo,
mit absoluten URL's / Pfadangaben würde es funktionieren.
Die Pfade kannst Du ja generieren, so dass es auch funktioniert, wenn Du die Dateien mal verschiebst.

Liebe Grüße,
joro
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Das ist auch grad meine Übergangslösung.
Allerdings hätte ich das ganze schon ganz gern dynamisch.

Sonst muss ich da immer Pfade ändern… Und ursprünglich wollte ich die Galerie auch weitergeben.
Sprich auf meiner Internetseite anbieten.
 

das_micha

Leipziger Reinette
Registriert
11.03.07
Beiträge
1.795
Du brauchst die Pfade für die php includes und das ausgehend von einer auch inkludierten Datei? Dann ist dirname(__FILE__) dein Freund. Der extrahiert dir den rootpfad bis zu der Datei in der du bist
 

Mini-Leopard

Rhode Island Greening
Registriert
20.03.08
Beiträge
476
Erklär das bitte etwas genauer...
Klingt spannend.

Kannst Du das vielleicht mal anhand meines Beispiels coden?
Versteh' das noch nicht so ganz
 

das_micha

Leipziger Reinette
Registriert
11.03.07
Beiträge
1.795
recht einfach erklärt:
__FILE__ ist eine sogenannte magische konstante. diese beinhaltet den kompletten pfad inklusive des dateinamens.

ist dein server von der verzeichnisstruktur beispielsweise so aufgebaut:
/var/www/htdocs/

wobei htdocs das verzeichnis ist in dem deine site liegt, also das document root.
jetzt gehen wir mal davon aus das du eine datei "file.php" hast und die in einem verzeichnis namens "test" im root liegt, so würde sich, wenn du in der datei file.php ein echo von __FILE__ machst folgendes ausgegeben werden:
/var/www/htdocs/test/file.php

die funktion dirname() extrahiert dir aus dieser komplettangabe den Pfad.
würdest du nun statt echo __FILE__;
echo dirname(__FILE);
machen würdest du folgendes ausgegeben bekommen:
/var/www/htdocs/test

wenn ich es richtig verstanden haben, dann hast du beispielsweise eine datei file_1.php die im hauptverzeichnis liegt.
diese holt sich mittels include die datei file_2.php welche im ordner test liegt.
das include würde entsprechend so aussehen:
include 'test/file_2.php';

in der file_2.php wird wiederum eine datei inkludet nämlich die file_3.php

der ansatz von joro ist garnicht verkehrt mit den absoluten pfaden, problem ist nur das du dabei noch $_SERVER['DOCUMENT_ROOT'] davor hängen musst.
ein inlcude nur mit nem / für die absolute pfadangabe haut bei den meisten Konfigurationen nicht hin und ist auch gut so!
Denn genau genommen ist das / schon die angabe für das root, allerdings vom server und nicht von deinem document root also deinem htdocs verzeichnis.

man könnte also auch folgendes schreiben:
include $_SERVER['DOCUMENT_ROOT']."/test/file_3.php";

ich persönlich empfinde include dirname(__FILE__)."/file_3.php"; eleganter
zumindest wenn die datein im gleichen verzeichnis liegen.

hoffe ich konnte dir helfen, ansonsten einfach fragen oder mal die oben beschriebenen echos ausgeben, dann siehste was passiert.

gruß micha