Problem mit PHP Include
Fabian Hachen
- php
Hallo...
Habe ein Problem mit einem PHP Include. Kenne mich leider auch nicht genügend aus mit PHP, so habe ich bisher leider keine Lösung gefunden.
Ich will ein .txt File includen. Diese Datei muss in der Navigation unter "CURRENTLY HEARING" angezeigt werden. Nun ist mein Problem, dass auch die Navigation bereits in die Seite includet ist, also ein Include im Include ;-) Hier nochmals rasch die Übersicht:
Normale Seite --> Include der Navigation (menu.php) --> Include des Songtickers (trackinfo.txt)
Das ganze funktioniert eigentlich auch richtig, wenn ich es so mache:
<? include "includes/trackinfo.txt"; ?>
http://www.fh-design.ch/html/content/blogger/default.php
Nun habe ich aber leider gemerkt, dass es nur funktioniert bei den Dateien die im Hauptverzeichnis liegen, also hier:
http://www.fh-design.ch/html/content/blogger/z.B. default.php
Allerdings nicht bei Unterverzeichnissen, z.B. hier:
http://www.fh-design.ch/html/content/blogger/archives/000020.php
Das liegt ja wahrscheinlich an der relativen Pfadangave des Includes. Leider funzt das Include aber auch nicht, wenn ich die Angabe absolut eingebe, also so:
http://www.fh-design.ch/html/content/blogger/includes/trackinfo.txt
Hier die Fehlermeldung:
Warning: Failed opening 'http://www.fh-design.ch/html/content/blogger/includes/trackinfo.txt' for inclusion (include_path='.;c:\Php\includes') in D:\wwwroot\fh-design.ch\html\content\blogger\default.php on line 321
Habe es auch schon auf folgende Art versucht, hat leider auch nicht
funktioniert, vielleicht habe ich es aber auch falsch gemacht:
<? include ("$DOCUMENT_ROOT/html/content/blogger/includes/trackinfo.txt");
?>
oder
<? chdir("includes");
include("trackinfo.txt"); ?>
Wäre super wenn mir jemand eine Lösung hat! Zum voraus besten Dank...
Gruss Fabian
abend,
Ich will ein .txt File includen. Diese Datei muss in der Navigation unter "CURRENTLY HEARING" angezeigt werden. Nun ist mein Problem, dass auch die Navigation bereits in die Seite includet ist, also ein Include im Include ;-) Hier nochmals rasch die Übersicht:
http://de3.php.net/manual/de/function.include-once.php
HIH
mfg,
(tanz das)
Z.N.S.
Hallo Z.N.S.
Danke fŸr Deine Antwort, befŸrchte leider, dass mein Provider keine so neue PHP Version hat, gibt es andere Mšglichkeiten?
Besten Dank...
Gruss Fabian
Moin!
Danke fŸr Deine Antwort, befŸrchte leider, dass mein Provider keine so neue PHP Version hat, gibt es andere Mšglichkeiten?
Zwei Dinge:
Erstens findest du deine PHP-Version heraus mit phpinfo().
Zweitens kann PHP schon seit immer include_once().
Allerdings: Include bindet _Programmcode_ ein. Es für das Einbinden von Textdateien einzusetzen ist immer ein gewisses Risiko, das nach Möglichkeit zu vermeiden ist, weil es absolut unnötig ist.
- Sven Rautenberg
Ach sch... ich kriegs einfach nicht zum laufen. Wre toll wenn mal jemand sagen knnte was ich reinschreiben soll. Bin nun schon so viele Stunden da dran das es mich langsam aber sicher richtig nervt, das kann doch gar nicht so schwer sein. Hier nochmals alle Infos:
In der Datei default.php (oder andere) setze ich ein Include auf mein Men mit
<$MTInclude file="includes/menu.php"$>
In der Datei menu.php habe ich dann noch das Include auf die
Textdatei mit den Songtiteln drin. das sieht dann so aus:
<$MTInclude file="includes/trackinfo.txt"$>
Das alles funktioniert nun einwandfrei von der default.php
aus. Allerdings funzt es nicht mehr, bei den Dateien die in
den Unterordnern liegen. Das Menu funzt zwar immer, aber beim
Songticker kommt dann immer der Fehler.
Meine Struktur sieht so aus:
http://www.fh-design.ch/html/content/blogger/includes/
--> menu.php (Men)
--> trackinfo.txt (Songticker)
http://www.fh-design.ch/html/content/blogger/
--> default.php (hier funktioniert auch alls)
http://www.fh-design.ch/html/content/blogger/archives
--> 000020.php (hier funzt es dann nicht mehr mit dem Songticker,
nur noch das Menu :-(
Freue mich auf eine Antwort...
Gruss aus der Schweiz
Fabian
Servus,
habe in etwas das gleiche Problem (siehe posting weiter unten).
Eine Loesung (die fuer mich nicht geht, da ich auch offline testen will).
Gehe ganz runter auf den root und dann wieder hoch (geht jedenfalls in ASP so):
<!--#INCLUDE file = "/Pfad/includes/inc.asp"-->
So in etwa,
bin mir auch nicht so sicher, da ich eben eine andere Loesung suche und diese fuer mich nichts ist.
Stefan
PS: In ASP kann man auch leider keinen variablen String aufbauen, die die Dateiverbindungen vor dem abarbeiten des Skriptes hergestellt werden.
Hallo,
Das liegt ja wahrscheinlich an der relativen Pfadangave des Includes.
Da vermute ich auch den Fehler.
Ein Include verhaelt sich AFAIK so, wie wenn es dort stehen wuerde, wo Du es einbettest.
(bei verschachtelten Includes also in der "aeussersten" Datei.)
Du solltest also in der ersten Include-Datei den Pfad zur zweiten Include-Datei
so angeben, wie er in der "aeussersten" Datei stehen muesste.
Das ist ein Unterschied z.B. zu externem CSS, wo Pfadangaben (z.B. zu Hintergrund-Bildern)
von der CSS-Datei aus gesehen sind.
Leider funzt das Include aber auch nicht, wenn ich die Angabe absolut eingebe, also so:
http://www.fh-design.ch/html/content/blogger/includes/trackinfo.txt
Includes mit absoluten ("http://...") Pfadangaben funktioniert AFAIK bei den meisten
Providern/Einstellungen nicht.
Gruesse,
Thomas
Hallo,
Kleine Ergaenzung:
Du solltest also in der ersten Include-Datei den Pfad zur zweiten Include-Datei
so angeben, wie er in der "aeussersten" Datei stehen muesste.
Das steht uebrigens auch in der dclp-FAQ:
Wie wende ich include() mit verschachtelten Verzeichnissen an?
http://www.dclp-faq.de/q/q-datei-einbinden.html
Gruesse,
Thomas
ÈÈ Das steht uebrigens auch in der dclp-FAQ:
ÈÈ Wie wende ich include() mit verschachtelten Verzeichnissen an?
ÈÈ http://www.dclp-faq.de/q/q-datei-einbinden.html
ÈÈ
ÈÈ Gruesse,
ÈÈ
ÈÈ Thomas
Danke fr Deine Hilfe, leider hab ichs noch nicht ganz raus. Hab Dir noch ein Mail geschrieben, hoffe Du hast es gesehen.
Gruss Fabian
Hallo,
Danke f�r Deine Hilfe, leider hab ichs noch nicht ganz raus. Hab Dir noch ein Mail geschrieben, hoffe Du hast es gesehen.
So geht das nicht. Ich finde es egoistisch, das Forum zu verlassen
und Fragen per Mail zu stellen.
Hier im Forum koennen Dir mehr Leute besser helfen als ich alleine,
und andere haben vielleicht auch etwas von der Antwort, wenn sie
hier steht (und spaeter im Archiv).
Also nochmal: Der Code und die relativen Pfadangaben darin
muessen so sein, wie wenn sie im aufrufenden Skript stehen wuerden.
Deshalb kannst Du das gleiche Include auch nicht in verschiedenen
Hierarchie-Ebenen einbinden, wenn das Include ein zweites
Include mit einer relativen Pfadangabe einbinden soll.
Vielleicht kannst Du statt mit include() die zweite Datei mit einer anderen
Funktion einbinden, z.B. mit readfile() oder einer anderen Funktion, bei
der Du einen Pfad in Bezug auf das Dateisystem angeben kannst.
http://www.php.net/manual/de/ref.filesystem.php
Der Punkt ist dann, herauszufinden, wie der Pfadanfang in dem
betreffenden Dateisystem heisst. (z.B. "/home/.../public_html/...")
Eventuell helfen Dir dabei die folgenden Variablen weiter:
$_SERVER["DOCUMENT_ROOT"]
$_SERVER["SCRIPT_FILENAME"]
$_SERVER["PATH_TRANSLATED"]
bzw.
$HTTP_SERVER_VARS["DOCUMENT_ROOT"]
$HTTP_SERVER_VARS["SCRIPT_FILENAME"]
$HTTP_SERVER_VARS["PATH_TRANSLATED"]
Gruesse,
Thomas
Hi Thomas...
Hatte mir eigentlich nur Deine Website angeguckt und gemerkt, dass Du ziemlich aus der NŠhe kommst, und das ist ja nicht gerade Ÿblich in einem eigentlich deutschen Forum! Habe ja eh das gleiche auch noch hier im Forum gepostet, war eigentlich mehr dazu gedacht weil ich es hier nicht gerade sehr Ÿbersichtlich finde, aber egal. Jedenfalls bringt es mir ehrlich gesagt leider nichts wenn Du mir ein paar Variablen angibst von denen ich keine Ahnung habe wie man sie einsetzen kann, da ich ja wie gesagt null Ahnung von PHP habe und das eigentlich auch nur fŸr dieses Include benštige. WŠre also toll wenn Du mir noch eine etwas konkretere Lšsung hast oder natŸrlich auch jemand anders, denn ich kann mir nicht vorstellen, dass das wirklich so schwer sein soll. Besten Dank!
Gruss Fabian