Sur les systèmes systemd, vous devrez peut-être configurer cela via systemd plutôt que les scripts d'initialisation du système V
Les étapes ci-dessous sont testées et fonctionnent sur Ubuntu 16.04 LTS. Et voici votre coupable pour les scripts d'initialisation redirigés :
/lib/lsb/init-functions.d/40-systemd
/etc/php/7.0/fpm/pool.d/www.conf
et configurez root en tant qu'utilisateur/groupe en tant que root
; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. user = root group = root
/lib/systemd/system/php7.0-fpm.service
et ajoutez -R au ExecStart
variable pour permettre au service de s'exécuter en tant que root
ExecStart=/usr/sbin/php-fpm7.0 --nodaemonize --fpm-config /etc/php/7.0/fpm/php-fpm.conf -R
$ systemctl daemon-reload
$ systemctl start php7.0-fpm
$ ps auwx | grep php root 32061 0.0 0.0 221680 26084 ? Ss 16:59 0:00 php-fpm: master process (/etc/php/7.0/fpm/php-fpm.conf) root 32063 0.0 0.0 221680 4992 ? S 16:59 0:00 php-fpm: pool www root 32064 0.0 0.0 221680 4992 ? S 16:59 0:00 php-fpm: pool www
J'ai enfin trouvé une solution. Il s'est avéré qu'Ubuntu utilisait systemd
pour démarrer et redémarrer PHP-FPM et ignorait donc le init.d
fichiers.
Si vous rencontrez des problèmes avec les ajustements de init.d
les fichiers étant ignorés et que vous êtes sur Ubuntu 15.04 ou version ultérieure, il y a de fortes chances que le service ait un systemd
fichier de service également.
Donc, le correctif pour mon problème :mon système a un fichier nommé /lib/systemd/system/php7.0-fpm.service
, qui est utilisé par systemd
. Avec la commande cat /lib/systemd/system/php7.0-fpm.service
vous pouvez voir le contenu du fichier de service. Vous remplacez php7.0-fpm.service
avec le nom de votre fichier de service. Le fichier de service de PHP7.0-FPM ressemble à ceci :
[Unit]
Description=The PHP 7.0 FastCGI Process Manager
Documentation=man:php-fpm7.0(8)
After=network.target
[Service]
Type=notify
PIDFile=/run/php/php7.0-fpm.pid
ExecStart=/usr/sbin/php-fpm7.0 --nodaemonize --fpm-config /etc/php/7.0/fpm/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
Dans mon cas, j'avais besoin d'ajuster le ExecStart
régner. Nous n'avons pas besoin de modifier ce fichier, car systemd offre un moyen de remplacer des règles spécifiques. La commande sudo systemctl edit php7.0-fpm.service
ouvrira un éditeur dans lequel vous pourrez saisir ces règles. Entrez simplement la ou les sections de la ou des règles que vous souhaitez modifier et enregistrez le fichier. Dans mon cas, cela ressemble à ceci :
[Service]
ExecStart=
ExecStart=/usr/sbin/php-fpm7.0 --allow-to-run-as-root --nodaemonize --fpm-config /etc/php/7.0/fpm/php-fpm.conf
Assurez-vous de réinitialiser la règle que vous souhaitez modifier en premier, sinon les deux règles seront exécutées. Assurez-vous également d'exécuter sudo systemctl daemon-reload
après avoir enregistré ce fichier. Dans mon cas, l'exécution de pools en tant que root est désormais autorisée sur Ubuntu 16.04.