Gérer un base directory différent pour chaque vHost avec open_basedir

Si vous avez un serveur Apache et que vous gérez différents sites. Il est important pour la sécurité de ne pas laisser PHP accéder aux dossiers et fichiers qui ne compose pas le site.

Si vous avez un serveur Apache et que vous gérez différents sites. Il est important pour la sécurité de ne pas laisser PHP accéder aux dossiers et fichiers qui ne compose pas le site.

La méthode qui va suivre vous expliquera comment configurer un base directory différant pour chacun de vos sites à l'aide de la méthode open_basedir.

Tout d'abord ouvez le fichier correspondant à votre vHost, généralement dans le dossier suivant :

/etc/apache2/sites-available/

Il suffit maintenant de rajouter cette ligne à votre configuration :

php_admin_value open_basedir "/var/www/monsiteexemple/"

Remplacez bien évidement /var/www/monsiteexemple/ par le dossier voulu.

Redémarrez Apache, c'est tout :

/etc/init.d/apache2 restart

Le problème des uploads

Avec la restriction open_basedir, les uploads peuvent ne plus marcher dans beaucoup des cas. 

L'explication est simple. Quand PHP est en train d'uploader un fichier il le place d’abord dans un dossier temporaire. il faut donc autoriser PHP à écrire dans ce dossier.

Sauf si vous avez changer ce dossier d'upload, par défaut il s'agit de "/tmp". Pour autoriser différent dossier il faut les indiquer en les séparant par ":" de cette façon :

php_admin_value open_basedir "/var/www/monsiteexemple/:/tmp/"

Commentaires