通过 php-deployer 部署后无需密码重新加载 php-fpm

Reloading php-fpm after deploy via php-deployer without password

我想要实现的是,通过 php-deployer.
According to php-deployer's documentation 重新加载 php7.2-fpm 服务,可以像下面的代码一样完成:

task('reload:php-fpm', function () {
    run('sudo /usr/sbin/service php7-fpm reload');
});

after('deploy', 'reload:php-fpm');

但是,我在部署时遇到以下错误:

➤ Executing task deploy:reload_php_fpm

↳ on [prod]

sudo service php7.2-fpm reload

在 PhpSecLib.php 行 124:
[运行时异常]
sudo: 不存在 tty 且未指定 askpass 程序

系统信息:

PHP Version 7.2
Ubuntu 18.04 LTS
PHP-Deployer Version 6.3.0

你知道我该如何解决这个问题吗?

经过深思熟虑,我终于找到了处理这种情况的正确答案。 我通过以下命令编辑了 /etc/sudoers 文件:

sudo visudo

在文件末尾,我添加了这一行:

siamak ALL=(ALL) NOPASSWD:/etc/init.d/php7.2-fpm reload

意思是,用户siamak有权限只需要重新载入php7.2-fpm,不用输入密码。对于任何其他管理任务,siamak 必须输入密码。