php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.06.2004, 17:02  
Gast
 
Beiträge: n/a
Standard [Erledigt] Include mit relativen Pfaden

Hallo zusammen,

ich habe ein Problem bei der Verwendung von includes. Vereinfacht gesagt, habe ich folgende Struktur:

index.php
config.php
php/dir1/login.php
php/dir2/tools.php

In der Datei "tools.php" wird die Datei "config.php" includiert. Nun habe ich aber das Problem, dass die Datei "tools.php" einmal von der Datei "index.php" und einmal von der Datei "login.php" includiert wird. Somit ist der Pfad aus dem die Datei "tools.php" aufgerufen wird (und in dem sie sich dann sozusagen befindet), unterschiedlich in den beiden Fällen.
Wenn ich also in "tools.php" den Befehl
Code:
include "config.php"
verwende, dann geht das gut, solange "tools.php" im Kontext von "index.php" aufgerufen wird, in einem anderen Kontext bräuchte man aber den Befehl
Code:
include "../../config.php"
Kann mir jemand sagen, wie man mit diesem Problem umgehen kann?
Ich habe in der PHP-FAQ auch schon den Hinweis auf die Konstante __FILE__ gesehen,
Code:
include(dirname(__FILE__)."/bar.php");
aber auch das funktioniert ja in meinem Fall nicht, da die zu includierende Datei nicht im selben Verzeichnis ist, wie die Datei in der der include-Befehl steht.

Ich bin mir aber sicher, dass es eine Lösung für das Problem gibt.
Wer kennt sie?

Gruß,
Ole
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 06.06.2004, 17:08  
Gast
 
Beiträge: n/a
Standard

Falls index.php Deine "zentrale Anlaufstelle" ist, solltest Du dort die entsprechenden Variablen oder Konstanten generieren, die die gewünschten Pfade beinhalten.

Ich selber nutze dafür die Möglichkeit, in der PHP Config ein auto_prepend_file zu definieren, welches automatisch immer vorher gestartet wird, wenn der Client ein PHP File aufruft. Somit sind alle Configvariablen/-konstanten in jedem Script verfügbar.
  Mit Zitat antworten
Alt 06.06.2004, 17:08  
nilsfeld
Gast
 
Beiträge: n/a
Standard

Grundsetzlich erstmal

-nur include in der main datei verwenden.
-kein include in einer datei die selber include wird verwenden. das schaft nur verwirung. so wie in deinem fall.

Ich habe mir das alles mal durchgelesen ist zwar simpel wenn man eine saubere struktur hat aber ichhab keine lust mich nun in dein wirwar einzulesen.

mfg
  Mit Zitat antworten
Alt 06.06.2004, 17:11  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von nilsfeld
-kein include in einer datei die selber include wird verwenden.
Dagegen hilft require_once und include_once.
  Mit Zitat antworten
Alt 06.06.2004, 17:15  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von meikel
Falls index.php Deine "zentrale Anlaufstelle" ist, solltest Du dort die entsprechenden Variablen oder Konstanten generieren, die die gewünschten Pfade beinhalten.

Ich selber nutze dafür die Möglichkeit, in der PHP Config ein auto_prepend_file zu definieren, welches automatisch immer vorher gestartet wird, wenn der Client ein PHP File aufruft. Somit sind alle Configvariablen/-konstanten in jedem Script verfügbar.

Ok, dass klingt sinnvoll. Aber so ganz habe ich noch nicht verstanden, was Du meinst. Welche Pfade sollen in diesen Konstanten stehen und inwiefern hilft mir das bei meinem Problem?
Stehe gerade irgendwie auf dem Schlauch...
  Mit Zitat antworten
Alt 06.06.2004, 17:38  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Olel
Welche Pfade sollen in diesen Konstanten stehen und inwiefern hilft mir das bei meinem Problem?
Dein Problem sind die relativen Pfade. Sowas ist suboptimal, weil man absolute Pfade verwenden will. Außerdem verwendet mit nicht include sondern require_once. Dann prüft PHP nämlich, ob er das File schon mal eingefügt hat, und fügt es so nur einmal ein.
  Mit Zitat antworten
Alt 07.06.2004, 12:41  
Gast
 
Beiträge: n/a
Standard

Grundsätzlich:
Wenn du so ein Konstrukt aufbaust, musst du davon ausgehen zumindest in einer der Erweiterungsdateien ein
Code:
include "config.php"
zu haben.
In deinem Fall liegt der Fehler in der Hauptlogik der Dateiverteilung. Du möchtest in index.php zwar ein Subinclude (tools.php), aber gleichzeitig läuft login.php auf der gleichen Verzeichnisebene wie tools.php als standalone-Skript. Wenn das so funktionieren soll, musst du alles was du in index.php machst, auch in login.php tun. Aber im Normalfall (saubere Programmierung von größeren Projekten) sollte index.php, je nach Fall, alle Subincludes verwalten.

Besser wäre:

In /config.php:
Code:
...
$_cfg['inc_path'] = dirname(__FILE__).'/php/inc';
...
In /index.php:

Code:
...
include_once(dirname(__FILE__).'/config.php');
...
if (foo_something_extended) {
    include_once($_cfg['inc_path'].'/tools.php');
}
...
if (foo_not_logged_in) {
    include_once($_cfg['inc_path'].'/login.php');
}
...
tools.php und login.php selbst müssten nichts mehr extra includieren und würden auf jeden Fall Zugriff auf alle config.php - Variablen haben.

Grüsse

Lev
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
include() ersetzen Shadow21 PHP Tipps 2006 3 30.08.2008 14:13
include isoliert ausführen – Lösungsansatz gesucht veit PHP-Fortgeschrittene 8 09.04.2008 09:26
hinter include wird eine 1 angezeigt |~Râdîant~| PHP Tipps 2008 8 19.09.2007 13:52
include Dateien wieder ausängen o.Ä. netti PHP Tipps 2007 8 17.12.2006 15:14
include problem Canni PHP Tipps 2006 26 14.11.2006 14:24
include - get - big problem Buschdieb PHP-Fortgeschrittene 6 14.04.2006 20:28
include, nur bestimmten teil neu laden Calli PHP Tipps 2006 2 27.01.2006 15:57
include() - wo liegt der Denkfehler ? kain PHP Tipps 2007 8 27.11.2005 19:45
Alternative zu Include PHP Tipps 2005-2 11 13.10.2005 14:13
Probleme mit header() und include() und relativen Pfaden PHP Tipps 2005-2 3 08.10.2005 16:00
Auf Firmen-Server funzt kein include aus fremden Verzeichnis PHP-Fortgeschrittene 3 19.07.2005 16:49
[Erledigt] Include liegt in einem anderen Verzeichnis - es geht nix PHP Tipps 2005-2 3 03.07.2005 22:40
[Erledigt] Sessions auch bei include aktiv? PHP Tipps 2005 1 28.02.2005 19:58
[Erledigt] Problemme mit include... PHP Tipps 2004-2 6 30.11.2004 12:20
HTTP_GET_VARS + Include = Array leer PHP Tipps 2004-2 3 24.11.2004 15:12

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php include mit relativen pfaden, php includemit html, index.php\ in den pfaden., php include keine relativen pfade zur uri, php relative pfade, php include mit pfaden, php inlude problematik pfade, php sauberes includen, php relative include funktioniert nicht, require_once include_once, include befehl in config, php einmal include, pfade php, php includemit relativen pfaden, php auto_prepend_file

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:56 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.