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/".