Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > Problem mit include Pfaden
Antwort
 
Themen-Optionen
Alt 03.11.2007, 20:36   Nach oben    #1
phpdev
Das Struct
 
Benutzerbild von phpdev
 
Registriert seit: 18.08.2007
Ort: Bremen
Beiträge: 15
Standard Problem mit include Pfaden

Nabend,

ich habe gerade ein kleines Problem.
Und zwar habe ich eine Klasse namens MysqlDB, diese ist in der Datei class_mysqldb.php untergebracht und die befindet sich in dem Ordner include/classes.

In der Klasse include ich eine config.inc.php (diese liegt im Ordner include/) um die Datenbankkonfigurationsdaten auszulesen.

Dort habe ich den Pfad wie folgt angegeben ../config.inc.php.
Wenn ich jetzt eine PHP Datei aufrufe die die class_mysqldb.php includet und im übergeordneten Ordner von /include/ liegt bekomme ich den Fehler:


Warning: MysqlDB::require_once(include/config.inc.php) [function.MysqlDB-require-once]: failed to open stream: No such file or directory in /opt/lampp/htdocs/dev/php/projekte/CycleBoard/forum/include/classes/class_mysqldb.php on line 134

Fatal error: MysqlDB::require_once() [function.require]: Failed opening required 'include/config.inc.php' (include_path='.:/opt/lampp/lib/php') in /opt/lampp/htdocs/dev/php/projekte/CycleBoard/forum/include/classes/class_mysqldb.php on line 134


Ich habe daraufhin den Pfad auf include/config.inc.php geändert dann scheint es zu funktionieren.
Rufe ich aber dann eine Datei auf die in irgendeinen anderen Ordner liegt und die auch wieder die class_mysqldb.php includet bekomme ich wieder die gleiche Meldung wie oben.

Irgendwie hab ich gerade ein Brett vorm Kopf und kann mir nicht erklären warum die class_mysqldb.php die Config nicht findet wenn ich die mit ../config.inc.php include....

Bin um jeden Ratschlag dankbar
phpdev ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.11.2007, 22:03   Nach oben    #2
Xean
Erfahrener Benutzer
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 421
Standard

Dieser Pfad geht von der aufgerufenen Datei aus.
von index.php ist der Pfad /include/config.inc.php
von xyz/abc.php ist der Pfad /../include/config.inc.php

Also müsstest du je nach dem wo deine Seite liegt, die aufgerufen wird den Pfad ändern.
Das ist aber umständlich. Man müsste in der Seite eine Variable für den Pfad anlegen, und die immer pflegen. Einfacher geht es so:

PHP-Code:
 include( dirname(__FILE__)  . '/../include/config.inc.php'); //das ist jetzt für deine MySQL-Klasse. 
MfG
Xean
Xean ist gerade online  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.11.2007, 23:05   Nach oben    #3
phpdev
Das Struct
 
Benutzerbild von phpdev
 
Registriert seit: 18.08.2007
Ort: Bremen
Beiträge: 15
Standard

Danke für deine Antwort.
Aber leider geht das von der index.php trotzdem noch nicht.


Warning: MysqlDB::require_once(/opt/lampp/htdocs/dev/php/projekte/CycleBoard/forum/include/classes/../include/config.inc.php) [function.MysqlDB-require-once]: failed to open stream: No such file or directory in /opt/lampp/htdocs/dev/php/projekte/CycleBoard/forum/include/classes/class_mysqldb.php on line 134

Fatal error: MysqlDB::require_once() [function.require]: Failed opening required '/opt/lampp/htdocs/dev/php/projekte/CycleBoard/forum/include/classes/../include/config.inc.php' (include_path='.:/opt/lampp/lib/php') in /opt/lampp/htdocs/dev/php/projekte/CycleBoard/forum/include/classes/class_mysqldb.php on line 134
phpdev ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.11.2007, 12:43   Nach oben    #4
phpdev
Das Struct
 
Benutzerbild von phpdev
 
Registriert seit: 18.08.2007
Ort: Bremen
Beiträge: 15
Standard

Gibt es denn keine Möglichkeit das der include Pfad immer der gleiche ist, und zB. von dem Pfad der MysqlDB Klasse ausgeht ?

Immer wenn ich jetzt in einer Datei die in einem anderen Ordner liegt als die index.php die Klasse include gibts halt diese Meldung.
Der MysqlDB Klasse kann ich ja noch den Pfad zu config übergeben aber wenn ich Dateien aufrufe die nur Funktionen beinhalten und irgendwelche andere Klassen oder Funktionen includen, müsste ich das jeder Funktion einzeln sagen.

Geändert von phpdev (04.11.2007 um 12:47 Uhr).
phpdev ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.11.2007, 13:10   Nach oben    #5
robo47
BIN EIN KRASSA HELD!!!111
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.188
Standard

1) Möglichkeit:
Sinnvoller wäre es, der Datenbankklasse ein Array oder Objekt mit den Daten zu übergeben, das macht die Klasse besser benutzbar, weil du auch schneller / einfacher 2 Instanzen nutzen kannst, um z.b. mit 2 verschiedenen Datenbank zu arbeiten
2) mit einem absoluten Pfad arbeiten,

du kannst dir mit realpath und ../ den absoluten Pfad aus der mysql-klassendatei heraus holen und darüber includen.
so ungefähr
PHP-Code:
$configPath realpath(dirname(__FILE__).'/../').'config.php'
(ungetestet)

Methode 1 wäre sicher die zu bevorzugende weil du damit deine Klasse nicht von irgendwelchen Pfaden und Dateistrukturen abhängig machst.

mfg
robo47
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.11.2007, 13:59   Nach oben    #6
phpdev
Das Struct
 
Benutzerbild von phpdev
 
Registriert seit: 18.08.2007
Ort: Bremen
Beiträge: 15
Standard

Erstmal vielen Dank!

Ich hab das jetzt so geändert das ich der Klasse die DB config Daten übergebe.

Ich habe aber noch einige Dateien die nur Funktionen beinhalten. In diesen Dateien include ich wiederum andere Dateien.
Dies muss ich dann wohl mit dem absoluten Pfad machen, wie von dir oben Vorgeschlagen.

Mir ist nur aufgefallen das die realpath Methode langsamer ist, hoffe das wirkt sich bei einer größeren Anzahl von Besuchern nicht so sehr negativ auf die Performance aus.
phpdev ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit LaTex (Facharbeit) mouCe Sonstige Programmiersprachen 6 04.12.2006 00:13
Apache kann nicht gestartet werden. Jan Tools, Server, Betriebssysteme 11 23.11.2006 09:26
mod_rewrite wird nicht geladen Tryzero Tools, Server, Betriebssysteme 13 17.09.2006 21:11
Problem mit Cookie und Reloads... Bookworm PHP-Programmierung 10 13.04.2006 12:09
OSX + Eclipse 3.1 Problem bacarni Eclipse 3 29.07.2005 21:19


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:39 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44