Include-Befehl nicht mehr flexibel

Sprite

Mitglied
Nach einem Serverumzug habe ich Probleme mit dem include auf meiner URL.
Kurz zur Erkärung: Der Übersichtlichkeit halber habe ich bei mir einen Script-Ordner eingerichtet. Da drin liegen z.B. die head.php, die bottom.php und die counter.php. Die head.php und counter.php sind durch einen include verbunden. Durch
Code:
<? include ('counter.php'); ?>
, weil sie ja im selben Ordner liegen.

Nun greife ich vom Root, von Ordnern und Unterunterunter-Ordnern auf die head.php zu. Doch statt die counter.php zu includen, bekomme ich nur eine Fehlermeldung. Also habe ich mal etwas rumprobiert und siehe da, wenn ich verschachtelte Includes mache, bei denen die Dateien in unterschiedlichen Ordnern liegen, geht das nicht.

Irgendwie will der Server beim Include immer von einem Ordner aus starten, nämlich von dem, von dem der erste Include startete. Es ist ihm völlig egal, ob ich zwei verschachtelte Dateien include, die im selben Ordner liegen. Das ist allerdings der Todesstoß für viele meiner Scripte, die ich untereinander flexibel includen lasse.

Ich habe mal im Anhang zwei Screenshots von meinen Versuchen und der Fehlermeldung.

Wie kann ich die includes wieder flexibel machen?
 

Anhänge

  • include.gif
    include.gif
    15,4 KB · Aufrufe: 128
open_basedir --> /home/vhosts/5000/meineurl.de --> no value

Also sozusagen mein FTP-Verzeichnis, wo ich dann noch in den htdocs springen muss.
 
Hmm, dann sollte es eigentlich funktionieren.
Änder die test1.php mal so:
PHP:
<? include ('../ordner2/test2.php'); ?>
 
Natürlich geht es dann, siehe rechts auf dem Bild oben, da habe ich es ja so gemacht.

Das nützt mir aber wie gesagt nichts. Denn wenn ich irgendwo in einem Unterordner die (z.B.) ../../../head.php include, dann muss ich in der head.php die (z.B.) counter.php auch per ../../../counter.php includen. Sobald ich das Script von einem Ordner höher aus aufrufe, geht das ja dann schon nicht mehr, weil wieder die Fehlermeldung kommt. Ein Ordner tiefer geht auch nicht.

Ich verstehe eben nicht, dass wenn ich sich die head.php und die counter.php im selben Ordner befinden, ich ab jetzt in die head.php nicht mehr

Code:
<? include ('counter.php'); ?>

kann, sondern

Code:
<? include ('../../../counter.php'); ?>

schreiben müsste, weil das total unflexibel ist, bzw. dann nur auf einen Ordner abgestimmt ist.

PS: Wie gesagt davon ausgehend, dass die head.php von wo ganz anders aufgerufen wird. Wie etwa aus der index.html, der /fische/index.html oder /fische/meerestiere.html oder /fische/grosse/a/index.html
Darum kann ich eben nicht bestimmen, welchen relativen Pfad die counter.php hat, weil sich der relative Pfad der includeden head.php von Seite zu Seite und Ordner zu Ordner ja immer ändert.
 
Die test1.htm includet zuerst die test1.php, somit ist test1.php quasi Bestandteil von test1.htm.
Du musst die test2.php also quasi in die test1.htm includen..... weil dort ja schon der inhalt von test1.php ist.

Hmm, mal gucken ob ich es so hinbekomm.....
Nehmen wir mal an Du hast im htdocs deine index.html, im /counter hast Du deine counter.php und im /counter/counter_img hast Du die Grafiken für den Counter.

Jetzt includest Du die counter.php in der index.html:
PHP:
<?php include('counter/counter.php'); ?>
Nun müssen in der counter.php die Pfade für die Grafiken angegeben werden:
PHP:
// dazu machst Du NICHT
<img src="counter_img/01.jpg">
 
// sondern
<img src="<?php echo dirname(__FILE__); ?>/counter_img/01.jpg">
 
// bzw. so
<?php
echo "<img src=\"".dirname(__FILE__)."/counter_img/01.jpg\">";
?>
So werden die Grafiken von /counter aus gesehen eingebunden.
Dass heisst, egal in welcher Datei Du die counter.php includest, der Pfad zu dieser währe immer /home/vhosts/5000/meineurl.de/htdocs/counter.
Ich hoffe es ist verständlich.
 
Hm, ich dachte bis eben, daß das includen nur in PHP-, und nicht in HTML-Seiten funktioniert :confused:


[ editpost ] Stichwort: Dateiendung
 
Zuletzt bearbeitet von einem Moderator:
@Dr Dau: Dieser Befehl wird mir wohl sehr weiter helfen, Danke sehr.

@michaelsinterface: Per AddType application/x-httpd-php .php .htm .html in der .htaccess.
 
Sprite hat gesagt.:
@michaelsinterface: Per AddType application/x-httpd-php .php .htm .html in der .htaccess.
Funktioniert jedoch nicht unbedingt bei jedem Hoster (eigene Erfahrung)..... muss sich also irgendwo deaktivieren lassen.

@michaelsinterface, natürlich kannst Du dort auch jede beliebige andere Endung eintragen..... auch Phantasieendungen.

Alternativ, sofern man die Zugriffsrechte besitzt, kann man die Einträge auch direkt in der httpd.conf vornehmen..... dann darf man aber den Serverneustart nicht vergessen (entfällt bei der Variante mit der .htaccess).
 
Zurück