PHP oder Javascript innerhalb der html-Dateien im Verzeichnis error_docs ausführen

  • Code


    Im webhosting sind die Fehlermeldungen innerhalb des Verzeichnisses error_docs gespeichert. Im Falle eines Fehlers (z.B. 401) wird diese Seite aufgerufen.

    Ich möchte in diesem Fall auch ein PHP Script anstoßen.

    Alle Webseiten sind in der PHP Einstellung auf:

    {WEBSPACEROOT}{/}{:}{TMP}{/}{:}{/}var{/}lib{/}php{/}sessions

    gestellt worden.

    Leider werden trotzdem keine eingebetteten PHP oder Javascripte innerhalb des htlm Code ausgeführt. Selbst ein einfacher echo Befehl :

    PHP
    <p class="lead">This page either doesn't exist, or it moved somewhere else!</p>
    
    <?php echo 'Bitte nur den Domainname eingeben'; ?>
    
    <hr/>

    ist nicht möglich.



    Wie oder was muß ich im Webhosting einstellen, damit ein PHP Script im Falle eines Fehlers ausgeführt wird?


    Danke für Eure Hilfe.

  • Solange die Datei die Endung .html hat, wird sie auch als reine html-Datei betrachtet. php-code darin wird nicht ausgeführt.

    Die Datei muss schon die Endung .php haben.

    Man kann allerdings Apache über eine .htaccess-Datei mit der Direktive "Apphandler" anweisen auch html Dateien durch den php-Interpreter zu jagen. Ob das allerdings hier im Webhosting (oder mit php-fpm) funktioniert, weiß ich nicht.

  • ...oder mit php-fpm...

    Ich habe das eben mal ausprobiert, weil es mich selbst interessiert hat und tatsächlich braucht es bei php-fpm noch einen weiter Schritt, da die Standardeinstellungen von php-fpm das parsen von html-Dateien nicht erlaubt.

    Zusätzlich zur .htaccess-Dateien, muss man auch in der php-fpm Konfigurationsdatei pool.de/www.conf die Dateiendung html erlauben, Das dürfte im Webhosting nicht funktionieren,


    Aber auf einem Server klappt es damit:

    .htaccess-Datei im Verzeichnis der Datei:

    Code
    <FilesMatch \.html$>
       SetHandler "proxy:unix:/var/run/php/php#.#-fpm.sock|fcgi://localhost/"
    </FilesMatch>

    im php-Verzeichnis, in fpm/pool.d/www.conf:

    Code
    security.limit_extensions = ... .html
  • die .htaccess ist nun im meinem Root Verzeichnis (Bbeim Webhosting nicht der wirkliche Root)

    Im Verzeichnis error_docs Verzeichnis auch die funktionierende html reingelegt:


    a) wenn .htaccess dann erscheint jetzt die Standard Apache Antwort, kein php.
    b) wenn kein .htaccess dann wird die html Datei korrekt dargestellt.

  • So ich habe noch einmal folgendfes erfolgreich getestet:


    mit der .htaccess im Verzeichnis Root und einem "link" zu einer 2ten.html Datei funktioniert es einwandfrei!


    Damit ist klar, dass dfsPHP ausserhalb der Webzugangsverzeichnisse nicht ausgeführt, bzw. gefunden wird..

  • Die Meldung, falls die PHP - Datei ausgeführt werden soll:

    Die Website ist nicht erreichbar

    Die Webseite unter https://stacktest.de/sdds ist eventuell vorübergehend nicht verfügbar oder wurde dauerhaft an eine neue Webadresse verschoben.

    ERR_INVALID_RESPONSE


    __________________

    Das ist die Meldung, falls die Standard-Einstellung aktiv ist (kein zusätzliches .htaccess) aber die Datei not_found.html fehlt:

    Not Found

    The requested URL was not found on this server.

    Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

    Apache Server at stacktest.de Port 443

    ___________________


    Es ist zum Mäusemelken...

  • Ja, sollte so richtig sein, da ich in der GLEICHEN .htaccess einmal

    -

    RewriteEngine On

    ErrorDocument 404 /error_docs/not_found.php


    und

    RewriteEngine On

    ErrorDocument 404 /error_docs/not_found22.html


    eingesetzt habe und not_found22.html wurde korrekt angezeigt (Orginal modifiziert um sicher zu sein kein html im Chache zu sehen).


    Achso, ich arbeite nicht auf localhost, sondern direkt auf der Webseite.

  • Ich habe nun


    RewriteEngine On

    ErrorDocument 404 /error_docs/not_found.php

    <FilesMatch \.html$>

    SetHandler "proxy:unix:/var/run/php/php#.#-fpm.sock|fcgi://localhost/"

    </FilesMatch>


    probiert, ohne Erfolg, ich komme aber auch nicht an das

    php-Verzeichnis, in fpm/pool.d/www.conf:

    security.limit_extensions = ... .html


    ran.

  • Sorry, ich habe leider nur den Webhosting 8000. Den vServer habe ich vor 3 Jahren abgegeben, da mit die Sicherheitspflege zu viel wurde.

    Beim Wenhosting sind die Mittel begrenzt, leider habe ich über das Wenige auch keine Anleitung.

    Deshalb wundert mich ja auch das Unterschiedliche Verhalten des selben / gleichen Apache Servers.