GNU/Linux >> Tutoriels Linux >  >> Panels >> cPanel

Scripts PHP open_basedir Restriction dans l'Erreur d'Effet

Le tweak de protection PHP open_basedir est une mesure de sécurité en mode sans échec qui empêche les utilisateurs d'ouvrir des fichiers ou des scripts situés en dehors de leur répertoire personnel avec PHP, à moins que le dossier ne soit spécifiquement exclu. Le paramètre PHP open_basedir, s'il est activé, garantira que toutes les opérations sur les fichiers seront limitées aux fichiers d'un certain répertoire, et empêchera ainsi les scripts php d'un utilisateur particulier d'accéder aux fichiers du compte d'un utilisateur non autorisé. Lorsqu'un script essaie d'ouvrir un fichier avec, par exemple, fopen() ou gzopen(), l'emplacement du fichier est vérifié. Lorsque le fichier se trouve en dehors de l'arborescence de répertoires spécifiée ou autorisée, PHP refusera de l'ouvrir et les erreurs suivantes peuvent se produire :

Avertissement :file_exists() [function.file-exists] :restriction open_basedir en vigueur. Le fichier (/home/user_name/public_html/wp-content/uploads/2006/12/picture.jpg) n'est pas dans le(s) chemin(s) autorisé(s) :(/home/user_name:/usr/lib/php:/usr/local /lib/php:/tmp) dans /home/user_name/public_html/wp-admin/inline-uploading.php à la ligne 226

Le message d'erreur ci-dessus apparaît sur un journal d'erreurs du serveur Web Apache httpd (error_log) hébergeant le blog WordPress. Cependant, le problème peut survenir sur tous les systèmes ou sites Web qui utilisent PHP comme langage de script.

La solution ou le contournement du problème de restriction open_basedir consiste à désactiver complètement la protection PHP open_basedir, ou à exclure la protection de certains comptes d'utilisateurs privilégiés, ou à autoriser l'accès au répertoire supplémentaire pour les scripts PHP.

Si vous utilisez cPanel WebHost Manager (WHM), vous pouvez facilement désactiver la protection PHP open_basedir ou exclure certains utilisateurs de la protection avec WHM. Allez simplement dans «Tweak Security» dans la section «Sécurité», puis sélectionnez le lien «Configurer» pour «Php open_basedir Tweak». À l'intérieur, vous pouvez activer ou désactiver la protection php open_basedir, ou exclure et inclure des hôtes de la protection.

Si vous utilisez le panneau de contrôle d'hébergement Plesk, vous devrez peut-être modifier manuellement le fichier de configuration Apache de vhost.conf et vhost_ssl.conf, et ajouter ou modifier les lignes php_admin_value open_basedir suivantes :

<Directory /full/path/to/the/directory/httpdocs>
php_admin_value open_basedir none
</Directory>

<Directory /full/path/to/the/directory/httpdocs>
php_admin_value open_basedir /full/path/to/dir:/full/path/to/directory/httpdocs:/tmp
</Directory>

Remarque :Pour les hôtes SSL dans le fichier vhost_ssl.conf, le chemin du répertoire se terminera par "httpsdocs" au lieu de "httpdocs".

Les chemins (ci-dessus ne sont qu'un exemple et doivent être remplacés par un chemin réel) derrière open_basedir sont les répertoires qui permettent spécifiquement l'accès aux scripts PHP du compte de domaine vhost, vous pouvez donc ajouter plus de répertoires dans lesquels les fichiers sont stockés et nécessaires à ouvrir par PHP, chacun séparé par la couleur ":". Mais soyez prudent car cela pourrait exposer votre système à une fraude à la sécurité.

Une fois cela fait, exécutez la commande ci-dessous pour appliquer les modifications, puis redémarrez le serveur Web Apache httpd (redémarrage apache2ctl ou redémarrage httpd) :

$PRODUCT_ROOT_D/admin/sbin/websrvmng -v -a

Si vous devez modifier manuellement le fichier de configuration Apache pour désactiver la protection PHP open_basedir, ouvrez simplement le fichier httpd.conf et recherchez les lignes commençant par les caractères suivants :

php_admin_value open_basedir …..

Remplacez toute la ligne sous l'hôte virtuel du compte d'utilisateur du domaine dont vous souhaitez désactiver la protection par la ligne suivante pour la désactiver :

php_admin_value open_basedir none

Vous pouvez également choisir d'autoriser vos scripts PHP à accéder à un répertoire supplémentaire sans désactiver la protection. Un répertoire supplémentaire peut être ajouté à la ligne, séparé par la couleur ":". Par exemple, pour ajouter /nouveau_répertoire à la liste d'autorisation :

php_admin_value open_basedir "/home/user_account/:/usr/lib/php:/usr/local/lib/php:/tmp"
php_admin_value open_basedir "/home/user_account/:/usr/lib/php:/usr/local/lib/php:/tmp:/new_directory"

Redémarrez Apache après avoir terminé l'édition. Notez que la restriction de la liste des répertoires autorisés ci-dessus est en fait un préfixe, pas un nom de répertoire. Cela signifie que "open_basedir =/dir/incl" autorise également l'accès à "/dir/include" et "/dir/incls" s'ils existent. Lorsque vous souhaitez limiter l'accès au seul répertoire spécifié, terminez par une barre oblique. Par exemple :"open_basedir =/dir/incl/".


cPanel
  1. Gestion des erreurs dans les scripts Bash

  2. Comment activer la journalisation des erreurs PHP dans Plesk 11

  3. Avertissement :file_exists() [function.file-exists] :restriction open_basedir en vigueur.

  4. Comment activer la journalisation des erreurs PHP

  5. Erreur 500 lors du téléchargement du projet Laravel sur le serveur

Comment exécuter des scripts via des tâches cron

Comment activer le rapport d'erreur PHP dans cPanel ?

Activer la journalisation des erreurs PHP sur l'hébergement Web et revendeur

Comment activer les messages d'erreur PHP sur cPanel ?

Comment augmenter la taille maximale du fichier de téléchargement / les valeurs PHP sur cPanel ?

Comment créer un journal d'erreurs PHP dans cPanel