Walther: Angeben in .htaccess

Moin,

gelten Angaben wie

AddDefaultCharset UTF-8
php_flag display_errors On

im .htaccess im Root-Verzeichnis

auch für die Unterverzeichnisse oder muss man sie dort wiederholen?

  1. Angaben in der .htaccess gelten für das Verzeichnis, in dem die .htaccess liegt, einschließlich aller Unterverzeichnisse.

    Ein Blick in die Beschreibung der jeweiligen Einstellung klärt Ausnahmen.

  2. Falls das funktioniert: Ja. Siehe Antwort von „Zucker“.

    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
    ### 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:

    <?php
    ### Safe as DOCUMENT_ROOT/host_settings.php
    
    if ($_SERVER['SERVER_NAME'] == 'localhost' ) {
        define( 'DEBUG', true );    # Testsystem
    } else {
        define( 'DEBUG', false );    # Webserver
    }
    ?>
    
    <?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 ###
    ?>