Fehler in .htaccess
Helmut
- htaccess
Guten Abend!
Das Statement
php_flag display_startup_errors on
liefert den Fehler "Internal Server Error". Was ist hierfür die Ursache?
Hallo Helmut,
vermutlich verwendest du php nicht als Apache-Modul (mod_php).
Wenn da so ist, müsstest du, meine ich, in die php.ini eingreifen oder eine .user.ini ergänzen.
Die Modalitäten dafür hängen vom Hosting ab. Administrierst du den Server selbst oder ist das ein Webhoster?
Bei einem Webhoster solltest du den Support ansprechen, ob das, was du tun willst, überhaupt erlaubt ist und wenn ja, wie die vom Hoster vorgesehene Methode ist. Eventuell gibt es sogar ein Handbuch vom Hoster, das dazu etwas enthält.
Rolf
Hallo Helmut,
vermutlich verwendest du php nicht als Apache-Modul (mod_php).
+1
Richtig. Bei den meisten Hostern läuft PHP (schon wegen dem, im Shared-Hosting notwendigen Switch des die Skripte ausführenden Benutzers auf den Zugang des Kunden) als fpm-fcgi.
Ersteinmal folgendes:
Die PHP-Startup-Errors braucht eigentlich allenfalls der Serveradmin, denn es zeigt Fehler, die beim Start von PHP passieren. Die haben mit den PHP-Skripten nichts zu schaffen, zeigen aber kaputte Inis oder defekte Module. Diese Infos findet ein Admin aber einfacher im Syslog bzw. Journal des Systems.
Anders ausgedrückt: Überlege, ob Du den Aufwand willst und was es bringt. Ich sehe vorliegend den Nutzen nicht.
Zum Anliegen (weil es ja nicht unbedingt um die PHP-Startup-Errors gehen muss):
Man kann mit einem Miniskript überprüfen, ob PHP als Modul, cgi oder fpm-cgi oder sonstwas läuft:
<?php header('Content-Type: text/plain'); ?>
<?=php_sapi_name(); ?>
Der universelle (fehlersichere) Einbau des Ansinnnens, php_flag zu benutzen, wird im Handbuch gezeigt:
<IfModule mod_php5.c>
php_flag FOO BAR
</IfModule>
Das müsste aber für jede PHP-Version gemacht werden. Rolfs Tipp, statt dessen womöglich (wenn möglich, das hängt vom Ziel ab) ini_set()
zu benutzen, ist zielführend. Es gäbe (falls erlaubt!) noch die user.ini und natürlich (wenn es Dein Server ist, Du also Root-Rechte hast), die php.ini selbst.
Die Liste zu ladender Module kann man vom System abfragen:
<?php header('Content-Type: text/plain'); ?>
<?=`ls "/etc/apache2/mods-enabled" 2>&1`; ?>
oder bei einem anderen (NGINX)
<?php header('Content-Type: text/plain'); ?>
<?=`ls "/etc/nginx/modules-enabled" 2>&1`; ?>
... was aber nicht funktioniert, wenn diese an anderer Stelle liegen, der Server nicht auf Linux oder meinetwegen BSD läuft oder der Zugriff (z.B.) durch eine access-control-list (acl) verboten ist.
Beachte in beiden Skripten die „Backticks“ (`)!
Literatur:
Alternative: (wer so viel schreibt, darf hoffentlich auch ein wenig „spammen“)
Ein hoffentlich hilfreiches Tool (da es fast jedes Problem schon mal gab, Quelltext und Download)
https://code.fastix.org/Projekte/PHP:Replacement für phpinfo()/
(Ansicht:)
https://home.fastix.org/phpinfo.php
Warnung:
Das sollte aber auf Deinem Server besser nicht von jedem oder jeder jederzeit abrufbar sein, da es potentiellen Angreifern Hinweise liefert. Auf meinem gibt es „ein paar Kleinigkeiten“ 😀, die beim Massenhosting eher nicht möglich sind.
Die Fehlermeldung, die du im Browser siehst, ist für die Öffentlichkeit bestimmt und verrät dementsprechend keine serverinternen Details.
Den genauen Fehlergrund findest Du im Fehlerprotokoll Deines Webservers. Frage Deinen Hoster, falls Du nicht weisst, wo es zu finden ist.