Inclusion
Alexander
- php
Hallo,
Ich mache es nicht so.. interessiert mich aber trotzdem..
Bsp. Dateien:
/index.php
/include/mysql.php
/include/config.php
Im index.php:
include (ROOT_PATH.'include/mysql.php');
Im mysql.php:
include ('config.php');
// Falsch wenn man mysql.php aus anderem Verzeichnis aufruft !!!
beim aufruf der index.php bekomme ich Fehlermeldung, dass Datei config.php nicht gefunden wurde. Folgendes funktioniert aber reibungslos:
include (ROOT_PATH.'/include/config.php');
Warum sucht der Parser nach der Datei config.php im Root Verzeichniss des Projektes und nicht im Include, wenn ich kein Verzeichnis bei Inclusion eingebe und beide Dateien (mysql und config) in einem Verzeichnis liegen?
Gruss Alexander.
beim aufruf der index.php bekomme ich Fehlermeldung, dass Datei config.php nicht gefunden wurde. Folgendes funktioniert aber reibungslos:
include (ROOT_PATH.'/include/config.php');
Warum sucht der Parser nach der Datei config.php im Root Verzeichniss des Projektes und nicht im Include, wenn ich kein Verzeichnis bei Inclusion eingebe und beide Dateien (mysql und config) in einem Verzeichnis liegen?
Der Parser guckt immer zuerst in dem Verzeichniss in dem er sich befindet...
Das mit der root ist Quatsch..
Wenn im nix ist dann guckt er in include..
Siehe hierzu http://php.net
Bzw. bist Du der Alexander hier?
[pref:t=76452&m=440411]
Dann rate ich Dir dringend eine Profi an den Server zu lassen...
Das sind wieder so Grundlagen...
Sehr kritisch was Du da machst.
TomIRL
Der Parser guckt immer zuerst in dem Verzeichniss in dem er sich befindet...
Das mit der root ist Quatsch..
Wenn im nix ist dann guckt er in include..
Das ist klar.. ich bin davon ausgegangen, dass index.php sich im root DES PROJEKTES befindet um das ganze verständlicher zu machen. Von mir aus kann es auch nix sein :-)
Hauptsache das, was oben beschrieben wurde. Wenn du besser lesen würdest, hättest du gesehen, was ich geschrieben habe und nich das, was du gedacht hast!
Gruss Alexander.
Naja egal. Es gibt da mehrere Möglichkeiten, wie man das lösen kann. Ich wollte ja nur wissen, warum es so ist und nicht anderes.
Man kann natürlich mittels
include_path in php.ini
oder
set_ini(...)
oder
include ($_SERVER['...'].$_SERVER['...'].'doc.php');
oder
...
machen. Je nach Geschmack.
Wichtig ist, das einige Typen vielleicht anfangen im Forum Antworten zu geben, anstatt andere für dumm zu verkaufen.
Gruss Alexander.
Moin ==> http://forum.de.selfhtml.org/faq/#Q-05a
Naja egal. Es gibt da mehrere Möglichkeiten, wie man das lösen kann. Ich wollte ja nur wissen, warum es so ist und nicht anderes.
Und was willst Du mir damit sagen?
Du_hattest_eine Frage!
Man kann natürlich mittels
include_path in php.ini
oder
set_ini(...)
set_ini?
ini_set (include_path) Aber Du kennst Dich ja aus..
oder
include ($_SERVER['...'].$_SERVER['...'].'doc.php');
oder
...
oder aber über .htaccess einstellen, weil das der vermutlich bessere Weg ist.
Wichtig ist, das einige Typen vielleicht anfangen im Forum Antworten zu geben, anstatt andere für dumm zu verkaufen.
Wichtig ist das man Fehler nicht so einfach stehen läst...
Das man nicht glaubt alle Problem alleine lösen zu wollen ohne überhaupt Ahnung davon zu haben was man damit anrichtet.
Wer nicht weiss was ich damit meine dem empfehle ich:
[pref:t=76452&m=440411]
Zu Deinem eigentlichen Problem:
Es gibt Dinge die sind Systembedingt so.
Für PHP gilt eben zuerst wird im Verzeichniss gesucht und dann im include_path.
Weil es bei einem vernünftigem Programmierstil kaum Sinn macht include Dateien irgendwo in der root abzulegen.
So jetzt ist aber wirklich genug..
TomIRL
Bei Gelegenheit empfehle ich Dir die </faq/>
P.S. Ich würde mich darüber freuen wenn Du uns mitteilen könntest ob Dir die Antworten in diesem oder in dem verlinkten Threat geholfen haben. Und wenn nicht würde mich interessieren warum Du nicht die Frage präzisiert hast.
Hallo Alexander,
Warum sucht der Parser nach der Datei config.php im Root Verzeichniss des Projektes und nicht im Include, wenn ich kein Verzeichnis bei Inclusion eingebe und beide Dateien (mysql und config) in einem Verzeichnis liegen?
Die Antwort liefert Dir das PHP-Handbuch unter: http://de.php.net/en/include, Zitat: "Files for including are first looked in include_path relative to the current working directory and then in include_path relative to the directory of current script. E.g. if your include_path is ., current working directory is /www/, you included include/a.php and there is include "b.php" in that file, b.php is first looked in /www/ and then in /www/include/."
Sollte ich die Frage falsch verstanden haben und es geht wirklich um das "Warum", dann sei nur soviel gesagt: Durch diese Vorgehensweise verringert sich der Overhead im Dateisystem massiv, da in definiertem Rahmen nach Dateien gesucht wird und nicht der gesamte Tree ausgehen von Server- oder Document-Root im wahrsten Sinne des Wortes gesucht werden muss.
Gruß, Thoralf