我在GPUImageMovie
文件夹中的shell_test.php
文件中包含以下代码:
/var/www/html
同一文件夹中的config.sh 包含以下代码:
<?php
shell_exec('/var/www/html/config.sh');
?>
#!/bin/sh
sudo -u root kill -SIGHUP $(cat /var/www/html/mosquitto/mosquitto.pid)
时,它会运行。我已将此添加到 sudoers 文件中,因此无需密码:
./config.sh
在上述两种方式中使用终端运行时,它的工作正常。为什么在PHP中运行时不执行?
答案 0 :(得分:0)
您的问题可能是apache,www-data或其他正在运行您的脚本的用户,并尝试以root身份运行它。
尝试不使用sudo -u root,并使用以下命令将文件组更改为www-data:
chown root:www-data your-script
答案 1 :(得分:0)
正如你所说&#34;它不会输出任何东西,但我的蚊子经纪人每次运行都会重置,这让我知道&#34;
我认为你应该替换
shell_exec('/var/www/html/config.sh');
带
$output = shell_exec('/var/www/html/config.sh');
echo $output;
根据php docs&#34; shell_exec - 通过shell执行命令并将完整输出作为字符串返回&#34;
shell_exec默认不打印;你必须存储字符串输出然后使用它
答案 2 :(得分:0)
我在代码中做了一些更改,但它确实有效。
在shell_test.php
中,我改变了这样的代码:
<?php
shell_exec('sudo -S ./config.sh');
?>
在config.sh
中,我改变了这样:
#!/bin/sh
sudo kill -SIGHUP $(cat /var/www/html/mosquitto/mosquitto.pid)