php-include und der pfad dahin
klaus
- php
hallo alle zusammen,
ich habe einen fehler, auf den ich mir keinen reim machen kann:
Warning: Failed opening '/scripts/conn.inc.php' for inclusion (include_path='.:/usr/share/php') in /www/test/sites/leistungen/index.php on line 1
ich versuche eine datei per php-include einzubinden, aber das geht irgendwie nur wenn ich einen relativen pfad benutze?
ein ../scripts/conn.inc.php das funktioniert tadellos,
aber sobald ich es mit /scripts/conn.inc.php versuche, geht da gar nicht mehr??
kann sich da jemand einen reim drauf machen ??
pfad-mäßig sieht das so aus:
+-scripts / conn.inc.php
|
+-sites/test.php
|
+index.php
also eigentlich müßte ich doch von test.php mit
dem pfad /scripts/conn.inc.php auf die datei kommen , oder ???
cih verstehs gerade nicht... ;-))
kann mir mal jemand einen klaps auf den kopf geben? ;-)
danke und viele grüße,
klaus
Hi!
kann sich da jemand einen reim drauf machen ??
pfad-mäßig sieht das so aus:
+-scripts / conn.inc.php
|
+-sites/test.php
|
+index.phpalso eigentlich müßte ich doch von test.php mit
dem pfad /scripts/conn.inc.php auf die datei kommen , oder ???
Nein, da Funktionen wie include, fgets, file... sich auf das lokale File-system beziehen. Und da ist / nicht der Document-root der Domain, sondern das Root-Verzeichnis des Servers(unter Win c:). ../ ist relativ zu aktuellen Script, daher funktioniert es. Sonst kannst Du den kompletten Serverpfad verwenden.
Grüße
Andreas
Hallo Klaus,
kann mir mal jemand einen klaps auf den kopf geben? ;-)
Bei include wird auf das Dateisystem zugegriffen, *nicht* auf das DocumentRoot des Webservers bzw. virtuellen Hosts. Daher bezieht sich das / am Anfang auf das komplette Root-Directory. include ('/bin/bash'); könntest Du z.B. /bin/bash includen, nur würde das sehr wenig Sinn machen. ;-)
Kleiner Tipp wegen Includes und Verzeichnissen: http://www.dclp-faq.de/q/q-datei-einbinden.html
Christian
Nein, der komplette Pfad heißt:
/www/test/sites/leistungen/scripts/conn.inc.php
hallo,
danke für die aufklärung...
das erklärt natürlich einiges ;-)
aber was mache ich denn, um an den pfad auf der dateiebene ranzukommen?
gibt es da eine möglichkeit?
oder eine variable, die den pfad enthält?
vielen dank nochmals für jede hilfe....
grüße,
daniel
Hallo!
aber was mache ich denn, um an den pfad auf der dateiebene ranzukommen?
gibt es da eine möglichkeit?
oder eine variable, die den pfad enthält?
zum einen sagt Dir das Dein Provider, außerdem stand es in der Fehlermeldung, und dann gibt es noch spezielle Funktionen in PHP:
http://www.php3.de/manual/de/function.getcwd.php
Udn dann gibt es da ja noch die Umgebungsvariablen:
$_SERVER["DOCUMENT_ROOT"] und $_SERVER["SCRIPT_FILENAME"]
was genau die bedeiten sagt eigentlich schon der Name, und sonst steht es auch noch im Manual: http://www.php3.de/manual/en/reserved.variables.php#reserved.variables.server
Grüße
Andreas
Hallo Andreas,
und was ist mit dirname (__FILE__)?
Christian
Hi!
und was ist mit dirname (__FILE__)?
Ohje! Habe ich vergessen, tut mir Leid :-(
*ggg*
Naja, vermutlich habe ich nich 10 andere Dinge vergessen aber im Orinzi reicht ja auch eine VErsion ;-))
Grüße
Andreas
hi,
ein bißchen umgesehen und probiert hab ich auch schon,
auch den http://www.dclp-faq.de/q/q-datei-einbinden.html hab ich mir angesehen ;-))
die variante funtzt nur, wenn beide im selben, bzw. untergeordneten verzeichnis stehen.
in meinem fall ging das nicht, weil das verzeichnis, zu dem ich wollte,
übergeornet war.
zählt das schon zu den 17minuten manual lesen dazu? ;-)
grüße,
klaus
Hi!
zählt das schon zu den 17minuten manual lesen dazu? ;-)
Ja, da warens nur noch 16 ;-)
Grüße
Andreas
hi,
zum einen sagt Dir das Dein Provider, außerdem stand es in der Fehlermeldung,
schon klar, aber das war auch nicht mein hintergedanke.
ich wollte das script sowohl bei mir lokal laufen lassen als auch beim provider ohne irgendwelche modifikationen daran vornehmen zu müssen.
auf jeden fall vielen dank !!!
$_SERVER['DOCUMENT_ROOT'] war genau das, was ich gesucht hatte...
ich hab eben die ganze zeit bei php.net rumgesucht, und mir realpath, basedir und sowas angesehen, aber da war nichts richtiges dabei.
auf die idee, nach den server-umgebungsvariablen zu schauen, bin ich gar nicht gekommen ;-)
dann schraub ich mir meinen include-pfad also mit
include ($_SERVER['DOCUMENT_ROOT']."/scripts/conn.inc.php")
zusammen?
ist das eine "übliche" methode, um sowas zu machen?
quasi "sauberer" stil? ;-))
oder macht man das normalerweise irgendwie anders?
vielen dank nochmal, du hast mir echt sehr weitergeholfen !!
grüße,
klaus
Hi!
auf die idee, nach den server-umgebungsvariablen zu schauen, bin ich gar nicht gekommen ;-)
Das kommt daher das Du Dir noch nie die Zeit genommen hast und Dich einfach mal schön im Manual umgesehen hast ;-)))
dann schraub ich mir meinen include-pfad also mit
include ($_SERVER['DOCUMENT_ROOT']."/scripts/conn.inc.php")
zusammen?
ist das eine "übliche" methode, um sowas zu machen?
quasi "sauberer" stil? ;-))
oder macht man das normalerweise irgendwie anders?
nö, genau so mache ich das auch meist. Wenn ich größere Anwnedungen Schreibe definiere ich mir auch schonmal ne Konstante:
define ("DOC_ROOT", $_SERVER['DOCUMENT_ROOT']);
und dann kannst Du das immer verwenden:
include (DOC_ROOT."/scripts/conn.inc.php")
Aber das ist unnötig.
vielen dank nochmal, du hast mir echt sehr weitergeholfen !!
gerne;-)
Und als Belohnung liest Du jetzt 17 Minuten im Manaual, OK?
Grüße
Andreas