Search code examples
phpfpmsudoersphp-deployer

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


What I'm trying to achieve is, to reload php7.2-fpm service via php-deployer.
According to php-deployer's documentation, it can be done like the code below:

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

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

However, I face the error below while deploying:

➤ Executing task deploy:reload_php_fpm

↳ on [prod]

sudo service php7.2-fpm reload

In PhpSecLib.php line 124:
[RuntimeException]
sudo: no tty present and no askpass program specified

System info:

PHP Version 7.2
Ubuntu 18.04 LTS
PHP-Deployer Version 6.3.0

Do you have any idea how can I solve this issue?


Solution

  • After digging around, I finally found the proper answer to handle the situation. I edited /etc/sudoers file by following command:

    sudo visudo
    

    At the end of the file, I added this line:

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

    It means that, the user siamak has permission to just reload php7.2-fpm without entering password. For any other administrative tasks, siamak must enter password.