PHP - 以root身份执行命令

时间:2012-01-14 15:23:35

标签: php ubuntu root execute su

我正在尝试从php执行su命令。

当我将命令放在终端或php /var/www/script.php时,它工作正常,但当我通过浏览器打开script.php时它会返回 - sudo: no tty present and no askpass program specified

感谢。

2 个答案:

答案 0 :(得分:0)

根据this

运行远程命令时,

ssh默认情况下不会分配tty。 没有tty,sudo在提示输入密码时无法禁用echo。 您可以使用ssh的“-t”选项强制它分配tty。 或者,如果你不介意你的密码被回应 屏幕,您可以使用“visiblepw”sudoers选项来允许此操作。

答案 1 :(得分:0)

我最近发布了一个项目,允许PHP获取真正的Bash shell并与之交互。在此处获取:https://github.com/merlinthemagic/MTS

您可以以root身份获得真正的bash shell。然后,您可以触发您的php脚本或直接在bash中执行命令。

下载后,您只需使用以下代码:

    $shell    = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true);
    $return1  = $shell->exeCmd('yourFirstCommand');
    $return2  = $shell->exeCmd('yourSecondCommand');
    //the return will be a string containing the return of the script
    echo $return1;
    echo $return2;

    //or if you want to trigger your script as root
    $return3  = $shell->exeCmd('php /my/script.php');
    echo $return3;

    //If your script contains code to make an SSH connection to another server 
    //there is a much easier way to do that using the project:
    $shell = \MTS\Factories::getDevices()->getRemoteHost('ip_address')->getShellBySsh('username', 'secretPassword');