gpt4 book ai didi

Php exec 命令不会执行

转载 作者:太空宇宙 更新时间:2023-11-04 12:37:30 26 4
gpt4 key购买 nike

我正在尝试创建一个 tmux session 并通过 php 在其中运行一些其他命令。

当我从 Web 运行脚本时,它不会执行命令,但是当我使用“php test.php”从终端运行脚本时,它会运行。

我尝试以 sudo 运行 cmds 并关闭 www-data 的 sudo pass。但命令仍然不会执行。

脚本:

$array_output = array();
$cmd = "sudo tmux new-session -s Server-17 -d ENTER 2>&1";
$output = shell_exec($cmd);
array_push($array_output, $output);
$cmd = "sudo tmux send -t Server-17 'cd /home/Minecraft/Servers/1/17/' ENTER 2>&1";
$output = shell_exec($cmd);
array_push($array_output, $output);
$cmd = "sudo tmux send -t Server-17 'chmod +x start_script.sh' ENTER 2>&1";
$output = shell_exec($cmd);
array_push($array_output, $output);
$cmd = "sudo tmux send -t Server-17 'sh start_script.sh' ENTER 2>&1";
$output = shell_exec($cmd);
array_push($array_output, $output);
var_dump($array_output);

输出:

array (size=4)
0 => null
1 => string 'failed to connect to server
' (length=28)
2 => string 'failed to connect to server
' (length=28)
3 => string 'failed to connect to server
' (length=28)

最佳答案

取自:How to make a system call remotely?

Apache 的用户 www-data 需要被授予权限才能使用 sudo 执行某些应用程序。

  1. 运行命令 sudo visudo。实际上我们想编辑 etc/sudoers 中的文件。要做到这一点,通过在终端中使用 sudo visudo ,它复制(temp)sudoers文件进行编辑。
  2. 在文件末尾,添加以下内容:-如果我们想使用命令重新启动 smokeping 并使用 mount 命令进行其他操作,

www-data ALL=NOPASSWD:/etc/init.d/smokeping/restart,/bin/mount

(假设您希望使用 super 用户运行 restartmount 命令(根)权限。)

但是,如果您希望使用 super 用户权限,然后添加以下内容而不是上面的内容。您可能不想这样做,不是针对 ALL 命令,非常危险。

www-data ALL=NOPASSWD: ALL

3.编辑 sudoers 文件后(通过 visudo 我们编辑 sudoers 的临时文件,保存并退出临时文件(visudo)写入 sudoers 文件。(wq!)

4.就是这样,现在在您的xxx.php脚本中按以下方式使用exec()记住要使用sudo 在 php 脚本中使用的命令之前。

例如:-

exec ("sudo /etc/init.d/smokeping restart 2>&1");

所以在您的问题中,将您希望在 step no (2.) 中使用的命令添加到我添加并根据需要更改您的 php 脚本。

关于Php exec 命令不会执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41258459/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com