Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

PHP includes und relative Pfade

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
wuschba
PostRank 8
PostRank 8
Beiträge: 655
Registriert: 16.06.2006, 16:37

Beitrag von wuschba » 07.10.2006, 11:24

Hallo!

Habe folgendes Problem: Ich möchte ein Script relativ anlegen, also dass es in jedem Verzeichnis läuft.

datei1.php4 soll also z.B. datei2.php includen:
hauptverzeichnis
- verzeichnis1
-- datei1.php4

- verzeichnis2
-- datei2.php4


Dazu schreibe ich in datei1.php4:
include "../verzeichnis2/datei2.php4".

Dann erhalten ich aber:
Warning: main(../verzeichnis2/datei.php4): failed to open stream: No such file or directory in [pfad]\hauptverzeichnis\verzeichnis1\datei1.php4 on line 2

Wieso funktioniert das nicht und wie mache ich es richtig? Der php-include-path enthält auch ".", also müßte es meiner Meinung nach oben funktionieren...

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Mr Omega
PostRank 5
PostRank 5
Beiträge: 217
Registriert: 12.10.2005, 13:08

Beitrag von Mr Omega » 07.10.2006, 12:02

Wenn Deine index Datei in Deinem Hauptverzeichnis liegt und Du Deine datei1.php von dort includest musst Du die datei2.php in der datei1.php so includen
include("../../verzeichnis2/datei2.php");


hauptverzeichnis
*verzeichnis1
**datei1.php
*verzeichnis2
**datei2.php
*index.php

wuschba
PostRank 8
PostRank 8
Beiträge: 655
Registriert: 16.06.2006, 16:37

Beitrag von wuschba » 07.10.2006, 12:21

Danke für Deine Antwort!

Huch, d.h. ich muß immer relativ zum Script, das eigentlich ausgeführt wird, includen?

Aber ich weiß ja in datei1.php4 gar nicht, ob datei1.php von /hauptverzeichnis/index.php included wurde oder von /hauptverzeichnis/wasweißich/nocheinpfad/ichbraucheauchdatei2.php

mcchaos
PostRank 9
PostRank 9
Beiträge: 1414
Registriert: 27.07.2004, 19:18

Beitrag von mcchaos » 07.10.2006, 12:25

Du könntest es so machen:
include realpath(dirname(__FILE__)."/../verzeichnis2/datei2.php4");

Aber vielleicht hat ja jemand noch eine einfachere Lösung?!

Mr Omega
PostRank 5
PostRank 5
Beiträge: 217
Registriert: 12.10.2005, 13:08

Beitrag von Mr Omega » 07.10.2006, 12:41

Sorry ich hatte da einen kleinen Denkfehler

Falsch --> include("../../verzeichnis2/datei2.php");

Richtig --> include("verzeichnis2/datei2.php");

Du musst immer von der obersten eben aus gehen.

Es Sei denn Du führst die Datei von hauptverzeichnis/verzeichnis1/datei1.php direkt aus, dann wäre include("../verzeichnis2/datei2.php"); richtig

Anonymous

Beitrag von Anonymous » 07.10.2006, 17:03

zur Not den include-path um "../", "../../" und "../../../" erweitern und

include("verzeichnis2/datei2.php");

verwenden..... :wink:

fornex
PostRank 4
PostRank 4
Beiträge: 154
Registriert: 01.03.2006, 01:14
Wohnort: :tronhoW

Beitrag von fornex » 08.10.2006, 17:20

lol, oder am besten mit "../../../../../../../../" erweitern


chdir( $HTTP_SERVER_VARS["DOCUMENT_ROOT"] );

include 'verzeichnis2/datei2.php';
include 'verzeichnis1/datei1.php';

usw.
Suche Linkpartner für Bereiche:
Flirt - Fun - Erotik - 1 Click Hoster

ICQ: 7o7727

Googlebot versteht Javascript

Anonymous

Beitrag von Anonymous » 08.10.2006, 18:01

fornex hat geschrieben: chdir( $HTTP_SERVER_VARS["DOCUMENT_ROOT"] );

include 'verzeichnis2/datei2.php';
include 'verzeichnis1/datei1.php';

usw.
könnte bei einigen scripten zu Probleme führen wenn du das aktuelle verzeichnis änderst....

fornex
PostRank 4
PostRank 4
Beiträge: 154
Registriert: 01.03.2006, 01:14
Wohnort: :tronhoW

Beitrag von fornex » 08.10.2006, 20:03

net(t)worker hat geschrieben:könnte bei einigen scripten zu Probleme führen wenn du das aktuelle verzeichnis änderst....
es sollen grundsätzlich nur relative pfade angegeben werden. Falls man nen Brei im Script hat, werden immer Tausende Probleme auftauchen. chdir ist kein Allzweckmittel, nur ist die Verwendung logischer und resourcensparender.
Suche Linkpartner für Bereiche:
Flirt - Fun - Erotik - 1 Click Hoster

ICQ: 7o7727

Googlebot versteht Javascript

twitch
PostRank 9
PostRank 9
Beiträge: 1222
Registriert: 09.04.2005, 14:01

Beitrag von twitch » 09.10.2006, 11:45

Bei manchen Projekten regle ich das so:

define ('twg_pfad', $_SERVER['DOCUMENT_ROOT'].'/'); // steht in der Config-Datei

if (!defined('INCLUDED')) {
// relativen Pfad für jedes Document setzten
$ebene = strlen(substr(__FILE__, 0, strlen(__FILE__) - strlen(basename(__FILE__)) - 1));
if($ebene > strlen(twg_pfad)) {
$tmp_ebene = str_replace(twg_pfad,'',substr(__FILE__, 0, strlen(__FILE__) - strlen(basename(__FILE__)) - 1));
$tmp_ebene = explode('/',$tmp_ebene);
for($i=0;$i<sizeof($tmp_ebene);$i++) {
$pfad .= '../';
}
define('pfad',$pfad);
}else{
define('pfad', './');
}

// Verhindere Doppelte Includes
define ('INCLUDED', true);
}

Damit habe ich mit der Konstanten "pfad" immer den richtigen Pfad...
Kann auch umständlich sein :-)

SEO - History, Tools, Videos, Downloads und mehr auf https://www.seo-ranking-tools.de/

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag