Interpretiert jQuery den Pfad falsch?

tequito

Mitglied
Hallo,

ich habe ein Problem und verstehe nicht wo der Fehler liegt. Per jQuery soll eine Datei aufgerufen werden (ajax) und das was zurückkommt an einer Stelle x eingefügt werden.

Mein Verzeichnis sieht so aus:
Code:
/class/
/include/
/javascript/
ordner.php

In der Datei "ordner.php" steht das HTML. Klickt man auf einen Link wird eine JavaScript-Funktion aufgerufen die diesen Code enthält, sie liegt in "/javascript/":
PHP:
  $.ajax({
    type: "GET",
    url: "./include/include.ajax.php",
    complete: function(ret){
      $("li#knoten").append(ret.responseText);
    }
  });

Wenn in der Datei "/include/include.ajax.php" einfach nur "abcde..." steht fügt es dies korrekt ein.

In "/include/include.ajax.php" sollen aber mit include() andere Dateien eingebunden werden die eine Ausgabe erzeugen. Es sieht so aus:
PHP:
  # Generelle Einstellungen laden
  include('./include/include.basic.php');

  // Daten ausgelesen
  include('./class/class.container.php');
  $tree = new container;

  echo $tree->generate('content');

Leider kommt dann diese Fehlermeldung:
Code:
Warning: include(./include/include.basic.php) [function.include]: failed to open stream: No such file or directory in D:\XAMPP\htdocs\mysystem\include\include.ajax.php on line 4

Warning: include() [function.include]: Failed opening './include/include.basic.php' for inclusion (include_path='.;D:\XAMPP\php\pear\') in D:\XAMPP\htdocs\mysystem\include\include.ajax.php on line 4

Warning: include(./class/class.container.php) [function.include]: failed to open stream: No such file or directory in D:\XAMPP\htdocs\mysystem\include\include.ajax.php on line 7

Warning: include() [function.include]: Failed opening './class/class.container.php' for inclusion (include_path='.;D:\XAMPP\php\pear\') in D:\XAMPP\htdocs\mysystem\include\include.ajax.php on line 7

Fatal error: Class 'cms_container' not found in D:\XAMPP\htdocs\mysystem\include\include.ajax.php on line 8

Was mache ich denn falsch?
 
PHP:
# Generelle Einstellungen laden
include('./include.basic.php');

// Daten ausgelesen
include('../class/class.container.php');
$tree = new container;

echo $tree->generate('content');
 
Irgendwie geht das nicht.

Normal steht der Aufruf der Datei "include.basic.php" immer in der Datei im Root-Verzeichnis.

Nun steht der Aufruf der "include.basic.php" in einer anderen include-datei, die alle im Verzeichnis "/include" liegen.

In "include.basic.php" steht der include auf die DB-Klasse.

Geht da irgendwas mit den Pfaden schief, wenn ich die eine include-Datei in einer anderen include-Datei reinhole?

Rufe ich nämlich die Datei "include.ajax.php" einzeln auf kommt diese Fehlermeldung:
Warning: include_once(./class/class.db.php) [function.include-once]: failed to open stream: No such file or directory in D:\XAMPP\htdocs\mysystem\include\include.basic.php on line 17

Warning: include_once() [function.include]: Failed opening './class/class.db.php' for inclusion (include_path='.;D:\XAMPP\php\pear\') in D:\XAMPP\htdocs\mysystem\include\include.basic.php on line 17

Fatal error: Class 'db' not found in D:\XAMPP\htdocs\mysystem\class\class.container.php on line 417
 
Die include.basic.php verwende ich fast in allen Dateien, die liegen aber immer im Root-Verzeichnis. Bedeutet das, dass includete Dateien immer an die Ursprungsdatei angepasst werden müssen und den Pfad wenn dieser korrekt ist nicht finden?
 
Relative Pfadangaben werden bei include von dem Speicherort der aktuellen Skriptdatei beziehungsweise von dem des aufgerufenen Skripts aufgelöst. Du kannst aber auch gleich absolute Pfade angeben.
 
Das z.B. sollte dann immer funktionieren, egal wo man das einbindet:
PHP:
include ( $_SERVER['DOCUMENT_ROOT'].'/include/irendeinscript.php' );
 
Ich bin aber nicht immer im Root-Verzeichnis des Servers. Was wenn ein user ein Script in einen Ordner "/mandant1" legt? Dann stimmt dieser Pfad nicht mehr. :(
 
PHP:
$_SERVER['DOCUMENT_ROOT'].'/'.$ordner_vom_user.'/irendeinscript.php'
z.B... ich weis ja nicht genau was du da vorhast... welche User können bei dir Scripte ablegen? Betreibst du ein Webhosting oder sowas? :confused:
 
Zurück