Exécuter vos scripts PHP avec les bons droits
Le problème avec la configuration actuel de notre serveur c'est que tous nos scripts PHP sont exécutés avec l'utilisateur www-data, nous sommes donc obligé de donner les pleins droits à certains répertoires ou fichiers pour qu'ils puissent être modifié. Corrigeons cette aberration (surtout si vous souhaitez ouvrir votre hébergement à d'autres personnes).
Commençons par installer suphp :
$ apt-get install suphp-common
Le fichier de configuration /ect/suphp/suphp.conf est relativement simple. Les seules options que j'ai modifiées sont min_uid et min_gid, puisque j'ai des applications dans /var/www, pour y mettre l'id de www-data (ie: 33) et umask à 0022 sinon les fichiers uploadés ne sont pas lisibles.
Ensuite, nous devons créer un nouveau fichier de configuration pour lighttpd, par exemple /etc/lighttpd/conf-available/10-suphp.conf :
server.modules += ( "mod_setenv", "mod_cgi" ) #$PHYSICAL["path"] =~ "\\.php$" { setenv.add-environment = ( "SUPHP_HANDLER" => "x-httpd-php" ) #} cgi.assign = ( ".php" => "/usr/lib/suphp/suphp" )
L'option $PHYSICAL["path"] n'étant disponible qu'à partir de la version 1.5.0 de lighttpd, pour l'instant elle est commentée.
Avant de redémarer, n'oubliez pas de désactiver le module fastcgi-php et d'activer celui-ci.
Maintenant vous pouvez ouvrir le fichier de log de suphp et tester vos différents sites :
# tail -f /var/log/suphp/suphp.log
Si, comme mois, vous avez commencé par tout faire exécuter par l'utilisateur www-data, vous risquez d'avoir un peu de travail. Par exemple, il n'est plus possible d'utiliser les liens symboliques vers un autre répertoire que le document root actuel, donc impossible d'utiliser ce script pour avoir le code de drupal uniquement dans /var/www. Vous allez sûrement devoir remettre de l'ordre dans les utilisateurs et les droits de vos différents sites. Voici une commande, qui devrait vous aider, que j'ai exécutée dans mon répertoire :
$ sudo chown -R gege2061:gege2061 * && find -type f -exec chmod 644 {} \\; && find -type d -exec chmod 755 {} \\;
Une fois que tout fonctionne, vous pouvez mettre l'option loglevel à warn pour éviter de surcharger vos log.