Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PHP wird nur in der index.php ausgeführt, aber nicht in includes

Einklappen

Neue Werbung 2019

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

  • [Erledigt] PHP wird nur in der index.php ausgeführt, aber nicht in includes

    Hallo allerseits.

    Ich stehe da vor einem Problem auf meinem Webspace und komme partout nicht weiter...

    In meiner Index-Datei werden andere Dateien per Include eingefügt. Diese laufen lokal (in XAMPP) ganz einwandfrei, aber nicht auf meinem Webspace (Strato PowerWeb Starter). Nach einigem herumtüfteln und ausprobieren stellte ich dann fest, dass PhP Code, den ich direkt in die Index.php schreibe tadellos ausgeführt wird. Allerdings nicht der Code aus den includes.

    wenn ich zum Beispiel eine Index datei habe mit
    PHP-Code:
    <?php include "hallo.php"?>
    Und die Datei "hallo.php" dann folgende Zeile enthält:
    PHP-Code:
    <?php echo "Hallo Welt!"?>
    ...dann gibt es keine Ausgabe.

    wenn ich nun aber eine Index datei habe mit
    PHP-Code:
    <?php echo "Hallo Welt!"?>
    (also den php Code direkt in der Index-Datei) -> dann funktioniert es.

    Wie gesagt, wenn ich selbiges lokal im Xampp laufen lasse, funktioniert alles (auch komplexeres) ganz einwandfrei.

    Und was noch merkwürdiger ist: Es scheint zwei Dinge zu geben, die auf dem Webspace dennoch funktieren:
    a) enthält die per include eingefügte Datei HTML wird dieses korrekt dargestellt.
    b) Punkt a klappt sogar über verschachtelte includes (zB index.php holt sich per include eine global.php in der ich Funktionen habe und die sich wiederum per include eine html-Datei zieht, die den HTML Kopfbereich der so wie er ist feststeht enthält).

    Da ja nun lokal alles funktioniert trifft mich dieser Fehler reichlich unvorbereitet.
    PHP-Fehlermeldungen kann ich leider keine liefern, weil sich auf meinem Webspace keine PHP Fehlermeldungen aktivieren lassen (keine eigenen PHP Ini, der Befehl "error_reporting(E_ALL);" ist wirkungslos, kein Zugriff auf PHP Settings über die Verwaltungsseite von dem Hosting-Paket).
    An den Verzeichnissen kann es nicht liegen, da die Dateien die es betrifft erstmal alle im gleichen Verzeichnis sind (und dazu kommt noch, dass ja der HTML Code aus einer includierten Datei ausgewertet wird).

    Inzwischen bin ich reichlich ratlos was diesen Fall angeht. Vor längerer Zeit hatte ich mal bei Strato einen V-Server. Dort hat es solche Probleme nicht gegeben.
    Da frage ich mich natürlich, ob das auch einfach an dem Hosting-Paket liegen kann...)

    Lieben Gruß und schon mal Danke vorab, falls jemandem so ein Fall schon mal über den Weg gelaufen ist und eine Ursache oder Lösung kennt.

  • #2
    PHP-Code:
    ini_set('display_errors'1); 
    Um die Fehlermeldungen auch anzeigen zu lassen.
    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

    Kommentar


    • #3
      Zitat von ChristianK Beitrag anzeigen
      In Produktivumgebungen ist es üblich, Fehlermeldungen nicht anzuzeigen sondern nur zu loggen. Display_errors ist jedoch eine Direktive, die du mit ini_set() überschreiben kannst.
      ...dann gibt es keine Ausgabe.
      Was kommt im Browser an (Quelltext)?


      Enthält der Server eine .htaccess? Was ist deren Inhalt?

      Kommentar


      • #4
        Vielen Dank für Eure Hilfe. Die Fehler über ini_set() anzeigen zu lassen hat mich wirklich weitergebracht.
        Irgendwie findet der Server die Dateien in Unterverzeichnissen nicht, was aber wohl irgendwie an meinen Includes liegen muss. Ich habe zum Testen noch mal eine Datei mit folgendem Code gebaut:
        PHP-Code:
        <?php  ini_set('display_errors'1);

        echo 
        "Diese Zeile steht im Wurzelverzeichnis in der Hauptdatei.";
        echo 
        "<br>Wenn der Include im gleichen Verzeichnis funktioniert, dann: "; include "hallowelt.php";
        echo 
        "<br>Wenn der Include ins Unterverzeichnis funktioniert, dann: "; include "test/hallowelt.php";

        ?>
        Alle drei Zeilen werden angezeigt und die "hallowelt.php" sowohl im gleichen als auch im Unterverzeichnis funktioniert.
        Ich werde mir also noch mal die Includes in meinem eigentlichen Skript näher anschauen. Muss wohl an denen liegen.


        Nachtrag: So, ich habe den Fehler jetzt gefunden.
        Als ich erstmal die Fehlermeldungen hatte konnte ich feststellen, dass nur includes in ein Unterverzeichnis betroffen sind. Ich habe dann alles mögliche gecheckt - Zugriffsrechte, Verzeichnis neu erstellt... und am Ende war es doch ganz trivial.
        PHP-Code:
        include "test\hallowelt.php"
        -> das war der Fehler. Ich klebe mir jetzt ein Post-it an den Bildschrim auf dem steht: "Backslash raus!"

        Vielen Dank für Eure Hilfe.

        Kommentar


        • #5
          Schau dir mal auch den hier an: Includes niemals ohne __DIR__
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar

          Lädt...
          X