用php + nginx执行shell脚本

我想重新加载我的php php应用程序的一些情况下与php的exec_shellfunction像这样:

shell_exec('sudo sh /var/www/camva/subdomain.sh'); 

这个代码在我的route.php文件上重新加载nginx的每个请求之后运行。

另外我的subdomain.sh shell文件包含:

 #!/bin/bash sudo /etc/init.d/nginx restart 

但是,我在每次请求后都会给出这个回应

 Reloading nginx ... fail ! 

我不知道为什么发生这种情况,但我可以运行这个命令在我的根与terminal命令相同的"sudo /etc/init.d/nginx restart"并给予正确的响应有关重新加载nginx!

谢谢你的帮助。

为了随便猜测,你正尝试使用一个可能没有root访问权限的帐户以root身份执行一个shell脚本。 Nginx 应该以没有root用户权限的用户身份运行。 你可以试着做的就是相应地修改脚本文件的权限,这样即使在另一个用户激活它的时候,它也可以作为root运行。

首先让root用户运行你想要运行的脚本(subdomain.sh)。 在CLI中运行这些命令,而不是在脚本中。

sudo chown root.root /var/www/camva/subdomain.sh

然后使脚本文件全部可执行,并且只能写入根目录。

sudo chmod 4755 /var/www/camva/subdomain.sh

现在,nginx用户应该能够执行脚本,但不能更改文件内容。

这就是说,我想知道为什么你需要重新加载服务器,也许,有一个更好的解决方案,你要解决的首要问题。

我将指出,将nginx用户添加到sudoers文件绝对不是正确的答案,并带来安全问题。