Caractéristiques
<<<
Sécurité et Safe Mode Fonctions désactivées par le Safe Mode
>>>

5.7 Safe mode
5 Caractéristiques
 Manuel PHP

->Sécurité et Safe Mode
Fonctions désactivées par le Safe Mode

5.7.1 Sécurité et Safe Mode

Nom Par défaut Modifiable Historique
safe_mode "0" PHP_INI_SYSTEM
safe_mode_gid "0" PHP_INI_SYSTEM Disponible depuis PHP 4.1.0.
safe_mode_include_dir NULL PHP_INI_SYSTEM Disponible depuis PHP 4.1.0.
safe_mode_exec_dir "" PHP_INI_SYSTEM
safe_mode_allowed_env_vars "PHP_" PHP_INI_SYSTEM
safe_mode_protected_env_vars "LD_LIBRARY_PATH" PHP_INI_SYSTEM
open_basedir NULL PHP_INI_SYSTEM
disable_functions "" php.ini seulement Disponible depuis PHP 4.0.1.
disable_classes "" php.ini seulement Disponible depuis PHP 4.3.2.
Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à  ini .

Voici un éclaircissement sur l'utilisation des directives de configuration.

    Voir aussi register_globals , display_errors et log_errors .

    Lorsque safe mode est actif, PHP vérifie que le propriétaire du script courant est le même que le propriétaire des fichiers ou dossiers qui seront manipulés par ce script. Par exemple, dans la situation suivante :

    
    -rw-rw-r--    1 rasmus   rasmus       33 Jul  1 19:20 script.php
    -rw-r--r--    1 root     root       1116 May 26 18:01 /etc/passwd
    exécuter le script script.php
    
    <?php
    readfile
    ('/etc/passwd');
    ?>
    générera cette erreur, si le Safe Mode est activé :
    Warning: SAFE MODE Restriction in effect. The script whose uid is 500 is not
    allowed to access /etc/passwd owned by uid 0 in /docroot/script.php on line 2

    Cependant, il arrive que la vérification faite avec le nom du propriétaire du fichier soit trop restrictive, et qu'une vérification sur le nom du groupe soit suffisante. C'est une autre fonctionnalité supportée par la directive safe_mode_gid . En lui donnant la valeur de On , les vérifications seront faites sur le GID , alors qu'en lui laissant sa valeur par défaut de Off , les vérifications seront faites sur le UID .

    Si vous utilisez la directive open_basedir au lieu du safe mode , alors les manipulations seront limitées aux fichiers situés dans les dossiers spécifiés. Par exemple (Apache httpd.conf ) :

    
    <Directory /docroot>
      php_admin_value open_basedir /docroot
    </Directory>
    Si vous exécutez le script script.php ci-dessus avec la configuration d'open_basedir, le résultat sera l'affichage suivant :
    Warning: open_basedir restriction in effect. File is in wrong directory in
    /docroot/script.php on line 2

    Vous pouvez aussi désactiver individuellement les fonctions. Par exemple, en ajoutant cette ligne dans le fichier php.ini :

    
    disable_functions readfile,system
    
    toute utilisation des fonctions readfile et system générera l'affichage suivant :
    Warning: readfile() has been disabled for security reasons in
    /docroot/script.php on line 2

    Attention

    Ces restrictions de PHP sont bien sûr invalides en exécution binaire.

    Sommaire :

    << Sécurité et Safe Mode >>
    Caractéristiques Safe mode Fonctions désactivées par le Safe Mode