Bonjour,
Il y a quelques années, j’utilisais suexec pour qu’apache gère php en tant qu’utilisateur local. Cette solution ne marche que sous certaines conditions, et cgi n’en fait pas partie.
Quand j’ai mis php en fast-cgi afin d’en utiliser plusieurs versions, la création et modification de fichiers via php est devenu problématique.
Il y a plusieurs solutions à ce problème.
- chmod 777
- mount bind avec changement d’utilisateur
- acl
Celle que j’ai retenu, c’est de régler php-fpm pour changer l’uid et gid du site.
Par défaut c’est www-data qui exécute les pages du site. Pour changer celà, on va regarder pas a pas ce qu’il faut faire.
Il faut avoir php en fast-cgi.
Je donne ci-dessous un exemple pour php7.2, mais on peut facilement adapter et faire fonctionner le truc pour php5 ou 7.0.
On arrete le service php-fpm
sudo /etc/init.d/php7.2-fpm stop
On règle certaines variables
site=www.symfony.loc repertoire=/home/brahim/symfony/www utilisateur=brahim groupe=brahim sudo /etc/init.d/php7.2-fpm stop sudo cp /etc/php/7.2/fpm/pool.d/www.conf /etc/php/7.2/fpm/pool.d/${site}.conf
On copie et modifie le fichier pool fpm
site=www.symfony.loc repertoire=/home/brahim/symfony/www utilisateur=brahim groupe=brahim sudo /etc/init.d/php7.2-fpm stop sudo cp /etc/php/7.2/fpm/pool.d/www.conf /etc/php/7.2/fpm/pool.d/${site}.conf
On modifie le fichier fraîchement copié
sudo nano -w /etc/php/7.2/fpm/pool.d/${site}.conf
Il faut remplacer :
- [www] -> [www.symfony.loc]
- user = www-data -> user = brahim
- group = www-data -> group = brahim
- listen = /run/php/php7.2-fpm.sock -> listen = /run/php/php7.2-www.symfony.loc.sock
Il faut adapter les changements en fonction du site.
Enfin, on lance le service
sudo /etc/init.d/php7.2-fpm start
Voilà, le site tournera sous les droits de brahim:brahim.
Plus besoin de changer via chmod ou autre.