web-dev-qa-db-fra.com

Comment définir pour un répertoire spécifique open_basedir

J'ai un répertoire /htdocs/unsecured et je veux limiter tout ce qui se trouve dans ce répertoire ou ses sous-répertoires de tout accès en dehors de ce répertoire. Où et comment définir open_basedir pour ce répertoire uniquement?

11
L84

Vous pouvez définir open_basedir dans votre fichier de configuration Apache, php.ini ou dans un fichier .htaccess.

Je règle normalement cela dans un fichier de configuration Apache tel que /etc/httpd/conf/httpd.conf.

Vous aurez une structure de répertoire pour votre domaine actuel/virtual-Host et vous pouvez ajouter la ligne directement dans cet emplacement:

<VirtualHost 123.123.123.123:80>
    <Directory /htdocs/unsecured>
        php_admin_value open_basedir "C:/htdocs/unsecured"
    </Directory>
</VirtualHost>

Remarque: Le 123.123.123.123 est l'adresse IP de votre domaine et cet exemple de bloc laisse potentiellement beaucoup de données pour cette configuration, indiquant uniquement ce qui est nécessaire pour open_basedir.

Dans php.ini, vous pouvez le faire à un niveau beaucoup plus général (et cela s’appliquera à chaque domaine sur votre serveur) avec:

open_basedir = "/htdocs/unsecured"

Dans .htaccess, vous devriez pouvoir utiliser les éléments suivants (bien que je n’aie pas encore testé):

php_value open_basedir "/htdocs/unsecured"

EDIT(chemin Windows)
Selon un commentaire, vous exécutez xammp sous Windows (sans utiliser d’hôtes virtuels). Avec cette information, je suggérerais de mettre votre règle open_basedir dans votre fichier php.ini. Cela devrait (espérons-le) fonctionner pour vous:

open_basedir = "C:\xampp\htdocs\unsecured"

Sous Linux, un : est un séparateur de champs. Dans Windows, le ; est le séparateur - donc devrait fonctionner, mais je ne peux pas le tester personnellement.

12
newfurniturey

Vous pouvez changer le open_basedir dans le fichier php.ini, dans votre fichier httpd.conf ou lors de l'exécution.

0
Ene