Windows | wamp |无法从php exec()

时间:2017-03-26 14:30:36

标签: php batch-file wamp exec plink

我需要通过PHP从Windows 7访问Linux机器。

为此,我创建了包含plink的简单bat(MyScript.bat)脚本。

c:\wamp\www\abc\plink.exe user1@192.168.70.128 -pw l1c -C "df -h">11.txt

当我执行bat脚本时,它工作正常,即输出写在文件11.txt

但是当我从PHP访问它时,创建的11.txt没有数据

echo exec('MyScript.bat');

此外,在浏览器中,脚本命令显示为文本。我甚至尝试使用print_r进行显示。

"c:\wamp\www\abc\plink.exe user1@192.168.70.128 -pw l1c -C "df -h">11.txt

1 个答案:

答案 0 :(得分:0)

不要为SSH启动外部工具。

PHP有native support for SSH

或使用phpseclib

require_once("Net/SSH2.php");
require_once("Crypt/RSA.php");

$ssh = new Net_SSH2($hostname);
if ($ssh->login($username, $password))
{
    echo $ssh->exec("df -h");
}

请参阅http://phpseclib.sourceforge.net/ssh/examples.html

无论如何,如果你想使用Plink,还要重定向标准错误输出来调试你的问题:

plink.exe .. dir > 11.txt 2>&1

请参阅Redirect Windows cmd stdout and stderr to a single file

您肯定错过-hostkey switch以明确指定可信主机密钥的指纹。