ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
217
217
EMPFEHLEN
-
Hallo und frohes Neues

ich bin ein bisschen verwundert. Ich includiere in einer Datei eine andere Datei und mal funktioniert es und mal nicht. Da diese ziemlich weit oben liegt bzw. die eigentliche Homepage in einem anderen Ordner liegt. Die Datei befindet sich in meinedomain/Script/vz/lib/DB_zugang.php
Darin werden die Zugangsdaten includiert.
Wenn ich nun meinedomain/Script/vz/index.php aufrufe, dann includiere ich ich die DB_zugang.php so:PHP-Code:include('../../../pass/pass.php');
Wenn ich aber eine andere Datei aufrufe z.B. meinedomain/Script/cronjob.php und dort die DB_zugang.php includierePHP-Code:include('lib/DB_zugang.php');
dann funktioniert die cronjob.php nicht, da diese nicht die pass.php includieren konntePHP-Code:include('vz/lib/DB_zugang.php');
Wenn ich aber nun den Pfad der includierten Datei ändere in
, dann funktioniert zwar die Cronjob.php, aber nicht mehr die meinedomain/Script/vz/index.phpPHP-Code:include('../../pass/pass.php');
Woran liegt das, obwohl ich die selbe Datei includiere?Ich bin keine Signatur! - Auch wenn`s so aussieht :) - Wirklich!
Über ein Danke freut sich jeder
-
01.01.12 12:05 #2
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.521
Du solltest beim includen 2 Dinge beachten:
- Es gibt eine include_path-Einstellung, die man mit get_include_path() auslesen und mit set_include_path() überschreiben kann.
- Wenn Scripts außerhalb (nicht in einem Ordner, der sich im include_path oder Ebenen darunter befindet) liegen, sollten diese über ihren absoluten Pfad im Datei-System eingebunden werden. Eine große Hilfe ist hier $_SERVER['DOCUMENT_ROOT'].
Du kannst dein Problem jetzt auf 2 Arten lösen:
- Du setzt den include_path so, das der Ordner, in dem sich das einzubindene Script befindet, angehängt und damit ebenfalls durchsucht wird.
- Du verwendest den absoluten Pfad zum Script.
Beispiel für das Erweitern des include_path:
Code php:1 2 3 4 5 6 7 8 9 10
// Erweitern des include_path set_include_path( get_include_path() . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] . '/Script/vz/lib' . PATH_SEPARATOR . $_SERVER['DOCUMENT_ROOT'] . '/Script/vz/pass' ); // Jetzt kann die Datei ohne Pfad-Angaben eingebunden werden include('DB_zugang.php'); include('pass.php');
Beispiel für den absoluten Pfad beim Einbinden:
Code php:1 2
include($_SERVER['DOCUMENT_ROOT'] . '/Script/vz/lib/DB_zugang.php'); include($_SERVER['DOCUMENT_ROOT'] . '/Script/vz/pass/pass.php');
Fazit: Die verwendung von relativen Pfadangaben in verschiedenen Ordner-Strukturen sollte vermieden werden.Geändert von saftmeister (01.01.12 um 12:16 Uhr) Grund: Im set_include_path-Code war noch ein Fehler mit dem PATH_SEPARATOR
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
Ich sehe aus deinem Beispiel nicht gerade, von woher du die include() aufrufst.
Wenn due verschachtelte include() hast, kann das zu interessanten nebenwirkungen führen. Entweder kann man das so lösen wie saftmeister geschrieben hat, oder man kann einen anderen Ansatz nehmen.
[PHP] verschachtelte include---------------------------------------------------------------------------------------------------
item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
item: Tutorial: [PHP][MySQL] Debug Queries
item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben
-
02.01.12 17:57 #4
Eine dritte Lösung (und meiner Meinung nach beste) wäre noch Konstanten mit Pfadangaben zu definieren:
PHP-Code:<?php
define('DS', DIRECTORY_SEPARATOR);
define('ROOT', __DIR__);
define('VZ_LIBS', ROOT.DS.'vz'.DS.'libs');
// ...
?>mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
Ähnliche Themen
-
Probleme mit Include
Von sindyho0374 im Forum PHPAntworten: 17Letzter Beitrag: 11.11.10, 14:26 -
Include-Probleme mit Immoscout PHP-SDK API
Von dwex im Forum PHPAntworten: 2Letzter Beitrag: 20.03.10, 13:26 -
Probleme mit include
Von Disasterp1ece im Forum PHPAntworten: 10Letzter Beitrag: 11.03.09, 19:24 -
probleme mit include
Von janosch im Forum PHPAntworten: 3Letzter Beitrag: 02.12.03, 19:37 -
Probleme mit include
Von Oli im Forum PHPAntworten: 5Letzter Beitrag: 09.06.02, 15:59





Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren