Le système d’interface Plesk utilise pour ses hébergements par défaut un système apellé « open_basedir ». C’est une restriction entre PHP et Apache qui interdit à PHP d’aller chercher par des includes ou fopen des fichiers ailleurs que dans le dossier racine (et sous-dossiers) d’un site. Par exemple, ceci va interdire à un site d’aller chercher des composants dans un dossier racine d’un sous-domaine, ou au contraire, d’interdire à un sous-domaine d’aller chercher des modules sur le domaine principale.
Ce système open_basedir peut être assez facilement modifié, mais il faut, sur Plesk 10.3 et les versions précédentes, aller faire les modifications en mode terminal : L’interface Plesk ne permet pas de faire ces modifs.
Tout d’abord, il faut savoir quels dossiers contiennent les informations qui vous intéressent. Dans l’exemple suivant, je vais utiliser l’arborescence suivant :
Répertoire principal du site mondomaine.com
/var/www/vhosts/mondomaine.com/httpdocs/
Répertoire principal du sous-domaine sousdomaine.mondomaine.com
/var/www/vhosts/mondomaine.com/monsousdomaine/
Imaginons que le site http://monsousdomaine.mondomaine.com doit aller chercher un fichier parametres.php qui se trouve, pour une gestion centralisée de votre site, dans la racine, sous le dossier /httpdocs :
Avec une restriction open_basedir, votre commande PHP d’include va échouer car le le dossier httpdocs n’est pas un sous-dossier de monsousdomaine. Il faut passer outre le paramétrage par défaut, en modifiant (ou en créant si inexistant) un fichier vhost.conf dans un dossier spécifique.
Si votre sous-domaine monsousdomine doit accéder à un fichier dans la racine du site principale et vous souhaitez lui retirer toute sécurité open_basedir, vous deviez ajouter le code suivant dans le fichier /var/www/vhosts/mondomaine.com/subdomains/monsousdomaine/conf/vhosts.conf
<Directory /var/www/vhosts/mondomaine.com/subdomains/monsousdomaine>
php_admin_value open_basedir none
</Directory>
Au contraire, si vous devez modifier votre domaine princpal pour désactiver open_basedir, vous devez modifier le fichier suivant : /var/www/mondomaine.com/conf.vhost.conf et ajouter le code suivant :
<Directory /var/www/vhosts/mondomaine.com/httpdocs>
php_admin_value open_basedir none
</Directory>
Le fait de retirer toute protection open_basedir est souvent discuté car cela peut ajouter une faille de sécurité, en laissant un script libre cours et libre accès à toute l’arboresence du serveur à laquelle le compte utilisateur Apache a accès, pour lire et déposer des fichiers.
Il peut être mieux simplement d’ajouter explicitement les dossiers que vous souhaitez autoriser.
Pour ce faire, au lieu de modifier les fichiers conf pour spécifier « open_basedir none », vous aller spécifier à la place de none, tous les chemins autorisés, séparés par des deux-points :
php_admin_value open_basedir /var/www/vhosts/mondomaine.com/httpdocs:/var/www/vhosts/mondmaine.com/monsousdomaine:/tmp
Ceci donnera accès aux dossiers racine du domaine, du sous-domaine et au dossier temporaire du serveur. Bien évidamment, ceci ne focntionnera que pour le site ou sous domaine qui correspond au fichier conf modifié.
Une fois vos création ou modification des fichiers vhost.conf effectués, vous devez relancer les commandes suivantes pour que plesk regénère ses propres fichiers de paramètres, et pour être certain qu’apache a été rechargé :
/usr/local/psa/admin/bin/httpdmng --reconfigure-all
/etc/init.d/httpd reload