Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
phpseclib SSH-更改目录并运行脚本?_Php_Ssh_Phpseclib - Fatal编程技术网

phpseclib SSH-更改目录并运行脚本?

phpseclib SSH-更改目录并运行脚本?,php,ssh,phpseclib,Php,Ssh,Phpseclib,我想执行/home/pi/mydir中的脚本,所以我需要做的第一件事是 $ssh->exec('cd mydir'); 然后 $ssh->exec('./script'); 但它不起作用,所以有人能帮我吗?这是exec()工作方式的一个基本限制。exec()有点像。。。打开PuTTY,键入cd mydir,重新启动PuTTY,然后键入/script。如果您做了所有这些,您就不会期望“/script”在“mydir”中运行。然而,exec()所做的几乎就是这样 在本例中,这不是ph

我想执行/home/pi/mydir中的脚本,所以我需要做的第一件事是

$ssh->exec('cd mydir');
然后

$ssh->exec('./script');

但它不起作用,所以有人能帮我吗?

这是exec()工作方式的一个基本限制。exec()有点像。。。打开PuTTY,键入
cd mydir
,重新启动PuTTY,然后键入
/script
。如果您做了所有这些,您就不会期望“/script”在“mydir”中运行。然而,exec()所做的几乎就是这样

在本例中,这不是phpseclib问题,而是SSH问题。SSH规范定义的exec()不支持这一点

更多信息:

我的建议是:要么使用绝对路径,要么使用read()/write()

祝你好运

cd /path/to/directory && your command
暂时解决我的问题

使用\n:

$ssh->exec("cd mydir\n./script");
或者创建一个文件
script.sh
(示例)并以UNIX格式保存:

cd mydir
./script
并执行此脚本:

$script = file_get_contents("script.sh");
$ssh->exec($script);

可能您的Web服务器没有执行该脚本的权限。我使用的是xampp,那么我需要什么样的权限?好的,我尝试使用读写,它工作正常,但是当我尝试运行程序/脚本(./video sample/test)时,有一个问题,脚本工作了大约1秒钟,然后关闭。有soloution吗?日志可能会提供一些见解。。您可以通过执行
define('NET\u SSH2\u LOGGING',2)获得它们在文件顶部,然后调用
echo“”$ssh->getLog()在末尾。一旦你得到了日志,发布它们,我们就可以看到我们看到了什么。好吧,我通过不终止进程来解决我的问题,所以这不是phpseclib的问题。无论如何,谢谢你的帮助。