Eu finalmente encontrei uma solução. Descobriu-se que o Ubuntu estava usando systemd
para iniciar e reiniciar o PHP-FPM e estava ignorando os arquivos init.d
.
Se você tiver problemas com ajustes nos arquivos init.d
que estão sendo ignorados e estiver no Ubuntu 15.04 ou posterior, há grandes chances de que o serviço também tenha um arquivo de serviço systemd
.
Portanto, a correção para o meu problema: Meu sistema tem um arquivo chamado /lib/systemd/system/php7.0-fpm.service
, que é usado por systemd
. Com o comando cat /lib/systemd/system/php7.0-fpm.service
você pode ver o conteúdo do arquivo de serviço. Você substitui php7.0-fpm.service
pelo nome do seu arquivo de serviço. O arquivo de serviço do PHP7.0-FPM é assim:
[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
No meu caso, precisei ajustar a regra ExecStart
. Nós não temos que editar este arquivo, porque o systemd oferece uma maneira de sobrescrever regras específicas. O comando sudo systemctl edit php7.0-fpm.service
abrirá um editor no qual você poderá inserir essas regras. Basta digitar a (s) seção (ões) da (s) regra (s) que você deseja ajustar e salvar o arquivo. No meu caso, parece assim:
[Service]
ExecStart=
ExecStart=/usr/sbin/php-fpm7.0 --allow-to-run-as-root --nodaemonize --fpm-config /etc/php/7.0/fpm/php-fpm.conf
Certifique-se de redefinir a regra que deseja editar primeiro, caso contrário, ambas as regras serão executadas. Além disso, certifique-se de executar sudo systemctl daemon-reload
após salvar este arquivo. No meu caso, a execução de pools como root agora é permitida no Ubuntu 16.04.