Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Datei einbinden

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Datei einbinden

    Hallo
    Ich bin neu bei PHP und versuche einfach, eine PHP Datei einzubinden, was mir aber einfach nicht gelingen möchte. Eigentlich sollte das ja ganz einfach sein (gemäss Buch) aber es streikt.

    Das wäre der Teil meines Codes:

    <body>
    <header><img src="images/banner.png" alt=""/>
    </header>
    <?php
    include "navigation.php";
    ?>

    <main>
    <h1>Titel</h1>
    <p></p>
    <div class="container_article"> </div>
    </main>

    Die Datei (testseite_01.php), in der diese Zeilen stehen und die Datei "navigation.php" sind auf der gleichen Ebene.

    Fehlermeldung

    Warning: include(navigation.php): failed to open stream: No such file or directory inS:\xampp\htdocs\PFAD\testseite_01.phpon line18

    Warning: include(): Failed opening 'navigation.php' for inclusion (include_path='.;S:\xampp\php\PEAR') inS:\xampp\htdocs\PFAD\testseite_01.phpon line18

    Webserver (PHP 5.6.x / XAMPP) läuft. Die Linie 18 ist die Linie mit dem include Befehl. Was übersehe ich?

    Vielen Dank für jede Hilfe.

    Gruss Day-Walker


  • #2
    Du solltest immer mit absoluten Dateipfaden arbeiten.

    Kommentar


    • #3
      Der Hinweis mit absoluten Dateipfaden zu arbeiten ist vom Grundsatz richtig, löst aber nicht das obige Problem.
      Day-Walker : Das sollte schon so funktionieren. Entweder
      • die Datei navigation.php ist nicht im selben Verzeichnis wie deine testseite_01.php oder
      • der Dateiname ist anders geschrieben oder
      • du zeigst uns den falschen Code
      PHP-Klassen auf github

      Kommentar


      • #4
        Oder er hat keine Leserechte.
        You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

        Kommentar


        • #5
          Ich arbeite nicht mit XAMPP, aber das zweite Warning irretiert mich. Ist der angegebene Pfad wirklich der richtige?
          Competence-Center -> Enjoy the Informatrix
          PHProcks!Einsteiger freundliche Tutorials

          Kommentar


          • #6
            Zitat von Day-Walker Beitrag anzeigen
            ...
            Die Datei (testseite_01.php), in der diese Zeilen stehen und die Datei "navigation.php" sind auf der gleichen Ebene.

            Fehlermeldung

            Warning: include(navigation.php): failed to open stream: No such file or directory inS:\xampp\htdocs\PFAD\testseite_01.phpon line18

            Warning: include(): Failed opening 'navigation.php' for inclusion (include_path='.;S:\xampp\php\PEAR') inS:\xampp\htdocs\PFAD\testseite_01.phpon line18

            Webserver (PHP 5.6.x / XAMPP) läuft. Die Linie 18 ist die Linie mit dem include Befehl. Was übersehe ich?
            Das kann man erst sagen, wenn dir den Pfad deines laufenden Scriptes zu Vergleichszwecken ausgeben lässt. Bspw. so:
            PHP-Code:
            // ...
            var_dump(__FILE__);
            // ... 
            Er sollte, bis auf den Dateinamen, mit dem in der Fehlermeldung übereinstimmen.

            Zitat von jspit Beitrag anzeigen
            Der Hinweis mit absoluten Dateipfaden zu arbeiten ist vom Grundsatz richtig, löst aber nicht das obige Problem.
            Eigentlich schon. Nur muss man sich halt die absoluten Pfade erstmal zusammenbasteln. Liegen beide Script-Dateien im selben Verzeichnis halt mit __DIR__:
            PHP-Code:
            include(__DIR__ '/navigation.php'); 
            So kann man sichergehen, dass zumindest das Verzeichnis existiert, in dem include() zu suchen beginnt.
            Hilfsweise zeigt ein
            PHP-Code:
            var_dump(stream_resolve_include_path('navigation.php')); 
            ob der wirkliche absolute Pfad zu navigation.php überhaupt existiert.
            Und
            PHP-Code:
            var_dump(get_include_path()); 
            sagt, wo include() gerade erfolglos herumsucht. (Was, im Ausgangsposting testweise eingebaut, sicher hilfreich wäre)
            Wenn man die Wurst schräg anschneidet, hält sie länger, weil die Scheiben größer sind.

            Kommentar


            • #7
              include
              Dateien werden unter dem angegebenen Pfad gesucht, oder, wenn keiner gegeben ist, im include_path. Wenn die Datei auch im include_path nicht gefunden werden kann, sucht include noch in dem Verzeichnis der aufrufenden Datei und dem aktuellen Arbeitsverzeichnis.
              Falls die obigen Angaben #1 stimmen sollte er dann mit
              PHP-Code:
              include(__DIR__ '/navigation.php'); 
              auch die Warnungen erhalten.
              PHP-Klassen auf github

              Kommentar


              • #8
                Zitat von jspit Beitrag anzeigen
                ...Falls die obigen Angaben #1 stimmen sollte er dann mit
                PHP-Code:
                include(__DIR__ '/navigation.php'); 
                auch die Warnungen erhalten.
                Nur, wenn die Datei 'navigation.php' im Verzeichnis __DIR__ nicht existiert. In allen anderen Fällen (keine Leserechte für Datei, Syntax-Fehler beim Parsen, e.t.c.) sieht man dann auch andere Fehlermeldungen. Die schließt man durch Verwendung von __DIR__ aus, weil sowohl dieses Verzeichnis existiert als auch lesbar ist. Das muss für die Angaben in include_path nicht gelten.
                Wenn man die Wurst schräg anschneidet, hält sie länger, weil die Scheiben größer sind.

                Kommentar


                • #9
                  Hallo zusammen

                  Vielen Dank für die vielen Antworten. Ich habe jetzt meine PHP Datei wieder gestartet und siehe da, es funktioniert. Meine Navigation wird auf der linken Seite angezeigt. Absolut komisch, da ich gar nichts geändert habe.
                  Es funktioniert jetzt sogar, wenn ich die PHP Datei für die Navigation in einem Unterordner php habe (./php/navigation.php), also eine Stufe weiter oben. Gestern hat es einfach nicht funktioniert.

                  Das mit dem __DIR__ würde mich aber trotzdem noch interessieren. Wo müsste ich das in meinem kleinen Code einfügen um die Fehlermeldungen zu sehen. Was ist __DIR__ und wie gebe ich das aus?

                  Bin absoluter Anfänger, was PHP angeht.

                  Gruss Day-Walker

                  Kommentar


                  • #10
                    Google: php __DIR__. Das Manual hilft dir dann weiter.
                    You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

                    Kommentar

                    Lädt...
                    X