0

在过去的三天里,我在 php 中遇到了一个问题。还没有找到解决方案。

我有一台 Cent OS 远程机器和一台 Ubuntu 本地机器。我有一个test.php在本地机器中命名的 php 脚本,因此我想使用该 php 脚本在远程机器上运行一些 Linux 命令。我使用 phpseclib 连接到远程机器。以下是 php 脚本test.php

<?php
include('Net/SSH2.php');

define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX);

$ssh = new Net_SSH2('10.3.2.0');
if (!$ssh->login('makesubdomain','abcdabcd')) {
    exit('Login Failed');
}
echo $ssh->exec('/usr/local/listdomain.backup/test/makedir.sh');
?>

我不能root在这里使用用户,因为在远程 cent os 机器中已经禁用了 root 登录。所以我创建了这个makesubdomain用户并赋予了 sudo 权限,也没有通过添加文件makesubdomain ALL=(ALL) NOPASSWD: ALL的密码。/etc/sudoers下面的一个是驻留在的 shell 脚本10.3.2.0

sudo -H sh -c '
    mkdir /usr/local/testdir
    if [ $? -eq 0 ];then
        echo  "success";
    else
        echo "not success";
    fi
'

但是现在当我使用命令从终端运行 php 脚本时,php test.php它显示错误sudo: sorry, you must have a tty to run sudo。最终,我需要做什么test.php以及使用给定的 php 脚本和 usermakedir.sh来创建 .sh 文件中指定的目录。请建议,因为我是 php 的初学者。testdirmakesubdomain

(注意:我可以makedir.sh在远程机器上成功运行文件,命令sudo ./makedir为 user makesubdomain,也无需提示 sudo 密码)

编辑

我在http://www.unix.com/shell-programming-scripting/201211-sudo-sorry-you-must-have-tty-run-sudo.htmlDefaults requiretty/etc/sudoers给出了评论,它工作正常。如果不这样做,我还有其他选择吗?

4

1 回答 1

0

$ssh->enablePTY()在做之前尝试调用$ssh->exec()

于 2013-08-01T12:21:34.333 回答