Ultimate: PHP - nur leere Seiten

Hallo. Ich habe gestern auf meinem Raspberry Pi das Betriebssystem Ubuntu MATE 16.04.2 LTS installiert.

Apache und PHP funktionieren einwandfrei.

Wenn ich eine Seite, die in PHP geschrieben wurde öffnen möchte, sehe ich nur eine leere Seite.

Wie kann ich dieses Problem beheben?

Vielen Dank!

  1. @@Ultimate

    Wie kann ich dieses Problem beheben?

    Sieht für mich nach „body no worky“ aus.

    LLAP 🖖

    --
    “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
  2. Hallo,

    Apache und PHP funktionieren einwandfrei.

    Das äußert sich wie?

    Wenn ich eine Seite, die in PHP geschrieben wurde öffnen möchte, sehe ich nur eine leere Seite.

    Denn dann hast du wohl eine PHP-Seite so geschrieben, dass die Seite leer ist.

    Wie kann ich dieses Problem beheben?

    Indem du erstmal das Problem beschreibst.

    Gruß
    Kalk

  3. Tach!

    Wenn ich eine Seite, die in PHP geschrieben wurde öffnen möchte, sehe ich nur eine leere Seite.

    Wie kann ich dieses Problem beheben?

    Erstmal die Ursache finden. Vermutlich gibt es einen Fehler, der PHP daran hindert, eine Ausgabe zu erzeugen. Gepaart mit der Unterdrückung von Fehlermeldungen (wie es im Produktivumfeld sinnvoll ist, beim Entwickeln jedoch nicht) kann der Browser dann nur ein großes Nichts anzeigen.

    Konfiguriere PHP so, das Fehlermeldungen ausgegeben werden. Setz in der php.ini das error_reporting auf E_ALL und dislay_errors auf on. Mitunter findet sich auch ein Hinweis im Error-Log des Webservers.

    dedlfix.

    1. Danke für die Antwort, das habe ich gemacht jedoch sehe ich trotzdem nur eine weiße Seite. Wenn ich den Quelltext anschaue wird jetzt aber ein CSS Code angezeigt.

  4. Hello,

    • guck in die Logs
    • zeig uns die Konsolenmeldungen (Netzwerkanalyse) vom Browser
    • zeig uns den Quelltext im Browser
    • zeig uns einen typischen Quelltext vom Server
    • untersuche die Eintellungen für die Kodierung

    Wird für die Textausgabe htmlspecialchars() benutzt? Wenn der Funktion die Kodierungseinstellungen nicht schmecken, gibt sie nichts mehr aus.

    Liebe Grüße
    Tom S.

    --
    Es gibt nichts Gutes, außer man tut es
    Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.
  5. Hallo Ultimate,

    schon mal in den Quelltext der „weißen Seite“ geschaut? Wenn du folgenden simplen php-Code <?php echo "test"; ?> in eine Datei mit der Endung .html packst, zeigt der Browser dir auch eine weiße Seite an – der PHP-Interpreter wurde nicht aufgerufen und der Browser versucht den PHP-Quellcode als HTML zu interpretieren. Das Resultat ist folglich eine – visuell – leere Seite.

    Überprüfe also, ob der PHP-Interpreter wirklich aktiv wird und den PHP-Code ausführt, am einfachsten mit einem HalloWelt-Prgramm. In dem Fall musst den Fehler in deinem komplexeren Code suchen und nicht die grundsätzliche Funktionsfähigkeit deines LAMP-Stacks anzweifeln.

    *[LAMP]:Linux Apache MySQL PHP

    Gruß
    Julius

    1. aktuell wird im Quelltext nur der CSS Code angezeigt.

      1. Hello,

        Du hast ja auch immer noch nicht gezeigt, wie deinphp-Testskript aussieht.
        Ohne Input kein Output, auch bei uns nicht. Zumindest wäre es dann verwunderlich, wenn etwas sinvollesdabei herauskäme ;-)

        Liebe Grüße
        Tom S.

        --
        Es gibt nichts Gutes, außer man tut es
        Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.
  6. Fehlermeldung gefunden (error.log):

    PHP Warning: fopen(textdatei.txt): failed to open stream: Permission denied in /var/www/html/index.php on line 38, referer: http://192.168.178.50/index.php

    Zeile 38 von datei.php: $handle = fopen ( "textdatei.txt", "w" );

    Anscheinend gibt es Probleme mit den Rechten. Wie kann ich das beheben?

    1. Hello,

      Fehlermeldung gefunden (error.log):

      PHP Warning: fopen(textdatei.txt): failed to open stream: Permission denied in /var/www/html/index.php on line 38, referer: http://192.168.178.50/index.php

      Zeile 38 von datei.php: $handle = fopen ( "textdatei.txt", "w" );

      Anscheinend gibt es Probleme mit den Rechten. Wie kann ich das beheben?

      Welche Apache-Version?
      Sind Virtual Hosts eingerichtet?
      Welches OS?
      Unter welchem User läuft der Apache-Worker?

      Erstmal zum Testen: Alle Directories und Dateien des Webverzeichnisses an den User des Apache-Workers übertragen.

      Ab Apache 2.4 geht das für jeden VirtHost separat

      Liebe Grüße
      Tom S.

      --
      Es gibt nichts Gutes, außer man tut es
      Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.
      1. Ab Apache 2.4 geht das für jeden VirtHost separat

        Apache 2.2 hat übrigens bald das Ende seiner Lebensspanne erreicht, am 11.Juli wurde das letzte offizielle Update veröffentlicht, bis Ende des Jahres wird es noch Sicherheitspatches geben, dann is Schicht im Schacht.

        Quelle: http://www.apache.org/dist/httpd/Announcement2.2.html

    2. Es handelt sich womöglich(!) um die Zugriffsrechte.

      fopen( $datei, 'w') erfordert Schreibrechte. Wenn Du das Skript in einem Terminal ausführst hast Du diese offenbar, wenn der Apache das Skript mit seinen Rechten ausführt (oft, aber nicht immer) dann muss "www-data", "www-run" (oder als was der Apache auch immer läuft) dieses Recht haben. Da "jeder" also "others" Webseiten abrufen (und damit Dein PHP-Skript starten) kann ist es (in vielen, aber nicht allen Fällen) sinnvoll, die Rechte für "jeden" bzw. "others" zu vergeben.

      In einem Terminal:

      cd /var/www/html/
      chmod 0666 textdatei.txt
      ls -l textdatei.txt
      

      Alternative 1:

      cd /var/www/html/
      chmod u=rw,g=rw,o=rw textdatei.txt
      ls -l textdatei.txt
      

      Alternative 2:

      cd /var/www/html/
      setfacl -m user::rw,group::rw,other::rw textdatei.txt
      getfacl textdatei.txt
      

      Du wirst Dich umfassend und gründlich über Rechte im Linux/Unix-Dateisystem informieren müssen.

      ~> man 1 chmod
      ~> man 1 chown
      ~> man 1 setfacl
      

      Das oben verlinkte PDF und die im Block aufgeführten Manuals helfen Dir genau an diesem Punkt. Es folgen sicherlich weitere Probleme: Sei also dazu bereit, ziemlich viel lernen müssen bevor Du "Irgendwas mit PHP" richtig online stellst. Manche machen das (lernen) nicht und stehen dann "montags in der Computerbild".

      Sollte die Datei 'textdatei.txt' (noch) nicht existieren, dann müsste der Server diese anlegen dürfen, dazu braucht der Server Schreibrechte an /var/www/html.

      Ich warne ausdrücklich davor, das zu tun, aber so wie das Skript aussieht müsste der Apache (also jeder) in /var/www/html schreiben dürfen.

      Sowas gehört nach außerhalb von $_SERVER['DOCUMENT_ROOT'] verlegt! Verschiebe also die Textdatei nach /var/www/data/textdatei.txt (das Verzeichnis musst Du anlegen und mit chmod 777 begehbar- und beschreibbar machen!) und gib dem Server die Rechte an genau diesem Verzeichnis und den darin befindlichen Dateien, ändere das Skript!