Angeben in .htaccess
bearbeitet von Raketenwilli[Falls das funktioniert](https://forum.selfhtml.org/self/2025/sep/20/fehler-in-htaccess/1821808#m1821808): Ja. Siehe Antwort von „Milch“.
~~~BAD
php_flag display_errors On
~~~
Aber die Idee ist eher subotimal, die funktioniert nicht überall. Wahrscheinlich suchst Du eine Lösung, damit Dein PHP auf dem Server und dem Testsystem unterschiedlich reagiert:
Mach das besser in purem PHP, das überlebt dann auch den Serverumzug.
~~~PHP
<?php
### Safe as DOCUMENT_ROOT/host_settings.php
define( 'DEBUG', true ); # Testsystem
#define( 'DEBUG', false ); # Webserver
# ...
?>
~~~
Tipp! Diese Datei auf dem Server und Deinem Testsystem schreibschützen. z.B. mit `chmod 444 host_settings.php`; Dann wird die nicht ganz so einfach versehentlich überschrieben.
Alternative:
Man kann das auch automatisch machen, z.B. anhand des Hostnames [oder einer anderen stabilen Eigenschaft](https://www.php.net/manual/en/reserved.variables.server.php):
~~~PHP
<?php
### Safe as DOCUMENT_ROOT/host_settings.php
if ($_SERVER['SERVER_NAME'] == 'localhost' ) {
define( 'DEBUG', true ); # Testsystem
} else {
define( 'DEBUG', false ); # Webserver
}
?>
~~~
~~~PHP
<?php
### Safe as DOCUMENT_ROOT/lib/error_handling.php
if (! defined( 'MyDEBUG' ) ) {
## Wenn die Datei nicht da ist, dann hast Du halt „Pech“...
include ( $_SERVER['DOCUMENT_ROOT'].'/host_settings.php' );
}
if ( defined( 'MyDEBUG' ) && MyDEBUG ) {
## Settings für das lokale oder zeitbegrenzte Debugging:
error_reporting( E_ERROR | E_WARNING | E_PARSE | E_NOTICE );
ini_set( 'display_errors', 1 )
} else {
## Settings für den Normalbetrieb
error_reporting( E_ALL );
ini_set( 'display_errors', 0 )
}
~~~
und dann in jede Datei, bei der Du das brauchst (Also nicht in libs, die erben das, sondern **nur** in **direkt** per URL aufrufbaren Skripten):
~~~PHP
<?php
### Falls Du nur für dieses Skript Fehler sehen willst, ist hier Deine Chance:
# define( 'DEBUG', true ); # spezieller Modus dieses Skript an/abschaltbar
require( $_SERVER['DOCUMENT_ROOT'] . '/lib/error_handling.php' );
### Dein Zeug ###
?>
~~~
Angeben in .htaccess
bearbeitet von Raketenwilli[Falls das funktioniert](https://forum.selfhtml.org/self/2025/sep/20/fehler-in-htaccess/1821808#m1821808): Ja. Siehe Antwort von „Milch“.
~~~BAD
php_flag display_errors On
~~~
Aber die Idee ist eher subotimal, die funktioniert nicht überall. Wahrscheinlich suchst Du eine Lösung, damit Dein PHP auf dem Server und dem Testsystem unterschiedlich reagiert:
Mach das besser in purem PHP, das überlebt dann auch den Serverumzug.
~~~PHP
<?php
### Safe as DOCUMENT_ROOT/host_settings.php
define( 'DEBUG', true ); # Testsystem
#define( 'DEBUG', false ); # Webserver
# ...
?>
~~~
Tipp! Diese Datei auf dem Server und Deinem Testsystem schreibschützen. z.B. mit `chmod 444 host_settings.php`; Dann wird die nicht ganz so einfach versehentlich überschrieben.
Alternative:
Man kann das auch automatisch machen, z.B. anhand des Hostnames [oder einer anderen stabilen Eigenschaft](https://www.php.net/manual/en/reserved.variables.server.php):
~~~PHP
<?php
### Safe as DOCUMENT_ROOT/host_settings.php
if ($_SERVER['SERVER_NAME'] == 'localhost' ) {
define( 'DEBUG', true ); # Testsystem
} else {
define( 'DEBUG', false ); # Webserver
}
?>
~~~
~~~PHP
<?php
### Safe as DOCUMENT_ROOT/lib/error_handling.php
if (! defined( 'MyDEBUG' ) ) {
## Wenn die Datei nicht da ist, dann hast Du halt „Pech“...
include ( $_SERVER['DOCUMENT_ROOT'].'/host_settings.php' );
}
if ( defined( 'MyDEBUG' ) && MyDEBUG ) {
## Settings für das lokale oder zeitbegrenzte Debugging:
error_reporting( E_ERROR | E_WARNING | E_PARSE | E_NOTICE );
ini_set( 'display_errors', 1 )
} else {
## Settings für den Normalbetrieb
error_reporting( E_ALL );
ini_set( 'display_errors', 0 )
}
~~~
und dann in jede Datei, bei der Du das brauchst (Also nicht in libs, die erben das, sondern **nur** in **direkt** per URL aufrufbaren Skripten):
~~~
<?php
### Falls Du nur für dieses Skript Fehler sehen willst, ist hier Deine Chance:
# define( 'DEBUG', true ); # spezieller Modus dieses Skript an/abschaltbar
require( $_SERVER['DOCUMENT_ROOT'] . '/lib/error_handling.php' );
### Dein Zeug ###
?>
~~~