gechger
Goto Top

Verständnisproblem beim php include Befehl

nach reichlichem gegoogle bin ich jetzt erst recht verwirrt

Hallo Forum,

jetzt wollte ich mal den include Befehl testen. Ich habe stundenlang gegoogelt, und daraufhin angenommen, daß ein einfacher Befehl ausreichen würde. In etwa so:
<? include "..\startseite\start.php"; ?>

Ich will diese Datei aus der index.php aufrufen. Von dieser Datei ausgehend finde ich meine Zieldatei im Ordner startseite und sie heisst start.php.
Ich weiss nach dem ganzen gegoogle nicht mehr, ob die ..\ richtig sind, oder nur .\ oder gar nichts davon. Habe jedenfalls alles durchgetestet und bekomme immer diese Fehlermeldung:

Warning: Division by zero in C:\xampp\xampplite\htdocs\mtv\phphp\index.php on line 38

Warning: include(php) [function.include]: failed to open stream: No such file or directory in C:\xampp\xampplite\htdocs\mtv\phphp\index.php on line 38

Warning: include() [function.include]: Failed opening 'php' for inclusion (include_path='.;C:\xampp\xampplite\php\pear\') in C:\xampp\xampplite\htdocs\mtv\phphp\index.php on line 38

Was mir nun wirklich komisch vorkommt, ist die dritte Meldung: include_path=.....
Das kommt wohl aus der php.ini. Bei mir in der Apache Testumgebung kann ich das sicher ändern, aber nicht, wenn die Dateien zum Provider hoch geladen werden.

Wie kriege ich also meine Datei mit include sauber eingebunden?????

Ein wenig verständliche Nachhilfe wäre sicher hilfreich face-smile

Schöne Grüße
Christof

Content-ID: 118017

Url: https://administrator.de/contentid/118017

Ausgedruckt am: 25.11.2024 um 04:11 Uhr

Bulleye
Bulleye 11.06.2009 um 20:54:58 Uhr
Goto Top
Wenn ich dich richtig verstehe sieht deine Ornderstruktur so aus:


- /index.php
- /startseite/start.php

demnach würde der Befehl lauten:

<?php include "./startseite/start.php"; ?>

Lg
RoterFruchtZwerg
RoterFruchtZwerg 11.06.2009 um 20:58:15 Uhr
Goto Top
Der Include-Path ist egal, der kommt nur zum Einsatz wenn die Quelle die du angegeben hast so nicht gefunden werden kann.
Auch wenn dein System unter Windows läuft, solltest du immer Slash zur Verzeichnistrennung verwenden, keinen Backslash.
Zu guter letzt solltest du vielleicht noch wissen, dass "./" aktuelles Verzeichnis bedeutet, und "../" darüberliegendes Verzeichnis.
Demnach ist, laut deiner Beschreibung, "../startseite/start.php" falsch. Richtig wären "./startseite/start.php" oder gleich "startseite/start.php".
Hat aber eigentlich wenig mit PHP zu tun, als mit Dateisystemen generell ;)
Bulleye
Bulleye 11.06.2009 um 21:01:49 Uhr
Goto Top
Zitat von @RoterFruchtZwerg:
Der Include-Path ist egal, der kommt nur zum Einsatz wenn die Quelle
die du angegeben hast so nicht gefunden werden kann.
Auch wenn dein System unter Windows läuft, solltest du immer
Slash zur Verzeichnistrennung verwenden, keinen Backslash.
Zu guter letzt solltest du vielleicht noch wissen, dass
"./" aktuelles Verzeichnis bedeutet, und "../"
darüberliegendes Verzeichnis.
Demnach ist, laut deiner Beschreibung,
"../startseite/start.php" falsch. Richtig wären
"./startseite/start.php" oder gleich
"startseite/start.php".
Hat aber eigentlich wenig mit PHP zu tun, als mit Dateisystemen
generell ;)


... Das war die ausführliche Variante.. face-smile

Lg
gechger
gechger 11.06.2009 um 21:28:05 Uhr
Goto Top
Schon mal vielen Dank für die schnelle Antwort.

Zu den Erklärungen noch eine kurze Frage:
ich habe in einer vorhandenen HP den Slash benutzt, um auf andere Seiten zu verlinken. Mozilla hat das aber nicht gefunden, erst nach dem ich den Backslash eingesetzt hatte, funktionierte es auch dort. Deshalb wollte ich sicher gehen mit den Backslash.

Habe es auch mal schnell getestet:
auch dieser Befehl
<? include "./startseite/start.php"; ?>
und dieser
<? include "startseite/start.php"; ?>
liefert mir denselben Fehler.
(include_path='.;C:\xampp\xampplite\php\pear\') in

Mein Apache scheint die Dateien irgendwo anders zu erwarten. Wie überrede ich ihn also, an der richtigen Stelle zu suchen, ohne die php.ini umzumodeln?

Schöne Grüße
Christof
Bulleye
Bulleye 11.06.2009 um 21:44:38 Uhr
Goto Top
Ich würde an deiner stelle erst einmal die ganze Geschichte mit dem Absoluten Pfad zu der Datei 'start.php' angeben
also so(wenn ich deine Verzeichnisstruktur richtig analysiert habe):

<?php include "C:/xampp/xampplite/htdocs/mtv/phpphp/startseite/start.php"; ?>

(natürlich sollte der Pfad überprüft werden ;))

Lg
dog
dog 11.06.2009 um 21:57:07 Uhr
Goto Top
Streng genommen sollte man weder / noch \ sondern die Konstante DIRECTORY_SEPARATOR benutzen, wenn man im Dateisystem arbeitet face-smile

Bei URLs wiederum ist / vorgeschrieben

Grüße

Max
Supermax
Supermax 12.06.2009 um 07:41:18 Uhr
Goto Top
Statt mit ../ und ./ solltest du besser mit $_SERVER['DOCUMENT_ROOT'] arbeiten. In dieser superglobalen Variable steht (wenn das PHP-Script über einen Webserver aufgerufen wird) immer das Basisverzeichnis der Webpräsenz, egal ob lokal unter XAMPP oder auf dem Server deines Webspace-Anbieters.

Also statt
<?php include('./startseite/start.php'); ?>
besser
<?php include($_SERVER['DOCUMENT_ROOT'].'/startseite/start.php'); ?>
gechger
gechger 12.06.2009 um 15:50:56 Uhr
Goto Top
Vielen Dank für alle Eure Anregungen. Ich habe es jetzt gelöst mit diesem Befehl:

<?php include "C:\\xampp\\xampplite\\htdocs\\mtv\\phphp\\startseite\\start.php"; ?>

So arbeitet auch Mozilla einwandfrei.

Schöne Grüße
Christof