Maison >développement back-end >tutoriel php >Le rôle de l'option open_basedir dans le fichier de configuration PHP
Ce qui suit est la description originale et la configuration par défaut dans php.ini :
; open_basedir, si elle est définie, limite toutes les opérations sur les fichiers au répertoire défini
et ci-dessous. par -répertoire ou
; fichier de configuration du serveur Web par hôte virtuel. Cette directive est
; *NON* affectée par l'activation ou la désactivation du mode sans échec.
open_basedir =
open_basedir est accessible. par les utilisateurs La portée active du fichier est limitée à une zone spécifiée, généralement le chemin de son répertoire personnel, et le symbole "." peut également être utilisé pour représenter le répertoire actuel. Notez que les restrictions spécifiées avec open_basedir sont en réalité des préfixes et non des noms de répertoire.
Par exemple : Si "open_basedir = /dir/user", alors les répertoires "/dir/user" et "/dir/user1" sont tous deux
accessibles. Donc, si vous souhaitez restreindre l'accès à un répertoire spécifié uniquement, terminez le chemin d'accès par une barre oblique. Par exemple, définissez-le sur :
"open_basedir = /dir/user/"
open_basedir peut également définir plusieurs répertoires en même temps. Utilisez des points-virgules pour séparer les répertoires dans Windows et des
deux points dans n'importe quel. autre système. Lorsqu'il est appliqué au module Apache, le chemin open_basedir dans le répertoire parent est automatiquement hérité.
Il existe trois méthodes pour effectuer des paramètres indépendants pour des utilisateurs spécifiés dans Apache :
(a) La méthode de configuration correspondante du répertoire dans le httpd.conf d'Apache :
php_admin_value open_basedir / usr/local/apache/htdocs/
#Pour définir plusieurs répertoires, vous pouvez vous référer à ce qui suit :
php_admin_value open_basedir /usr/local/apache/htdocs/:/tmp/
(b) La méthode de configuration correspondante de VirtualHost dans le httpd.conf d'Apache :
php_admin_value open_basedir /usr/local/apache/htdocs/
#Pour définir plusieurs répertoires, vous pouvez vous référer à ce qui suit :
php_admin_value open_basedir /var/ www/html/:/var/tmp/
(c) Parce qu'une fois open_basedir défini dans VirtualHost, cet utilisateur virtuel n'héritera plus automatiquement de la valeur du paramètre open_basedir dans php.ini
. Il est difficile d'obtenir des mesures de configuration flexibles, il est donc recommandé de ne pas définir cette restriction dans VirtualHost
. Par exemple, vous pouvez définir open_basedir = .:/tmp/ dans php.ini.
est autorisé à accéder au répertoire actuel. (c'est-à-dire le répertoire où se trouve le fichier de script PHP) et au répertoire /tmp/
Veuillez noter : si le répertoire temporaire de téléchargement des fichiers est défini dans. php.ini est /tmp/, alors vous devez
lors de la configuration de open_basedir Inclure /tmp/, sinon le téléchargement échouera. La nouvelle version de php affichera le message d'avertissement "restriction open_basedir en vigueur"
, mais le message d'avertissement. La fonction move_uploaded_file() peut toujours supprimer avec succès le fichier téléchargé dans le répertoire /tmp/, je ne sais pas
Est-ce une vulnérabilité ou une nouvelle fonctionnalité
Configuration pour la version ShopEx472 :
open_basedir = "D:/Server;../catalog;../include;../../ home;../syssite;../templates;../langue;../../langue ;../../../langue;../../../../langue"