Php 超过30秒的最大执行时间(SSH)

Php 超过30秒的最大执行时间(SSH),php,ssh,rsa,phpseclib,Php,Ssh,Rsa,Phpseclib,我对php和phpseclib是新手 我计划在php中编写一个SSH客户端,作为我项目的一部分。我正在使用phpseclib库 在我的项目中,公钥将被上传到只支持openSSH和Putty密钥格式(公钥)的服务器(路由器) 我使用puttykeygen创建了密钥对。我用php编写了一个SSH客户端。但在显示加载一段时间后,它显示: 注意:我不这么认为,因为执行时间有限(30秒) 致命错误:第2699行的C:\xampp\htdocs\pages\Net\SSH2.php中超过了30秒的最大执行时

我对php和phpseclib是新手

我计划在php中编写一个SSH客户端,作为我项目的一部分。我正在使用phpseclib库

在我的项目中,公钥将被上传到只支持openSSH和Putty密钥格式(公钥)的服务器(路由器)

我使用
puttykeygen
创建了密钥对。我用php编写了一个SSH客户端。但在显示加载一段时间后,它显示: 注意:我不这么认为,因为执行时间有限(30秒)

致命错误:第2699行的C:\xampp\htdocs\pages\Net\SSH2.php中超过了30秒的最大执行时间

我的代码:

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

$ssh = new Net_SSH2('remoteip');
$key = new Crypt_RSA();
$key->loadKey(file_get_contents('sshprivatekeyfile'));
if (!$ssh->login('admin', $key)) {
print_r($ssh->getError());
exit('Login Failed');
}

echo $ssh->exec('show clients');/any router commands/*
?>

检查此项

按如下方式延长最大执行时间:


ini\u集('max\u execution\u time',300)
//300秒

在CLI(Linux)上执行ping 192.168.10.1操作。结束了吗?这不适合我。它只是永远不停地发送数据。所以,这可能就是为什么它会为你计时。因为ping命令永远不会真正结束

有两种解决办法

  • Do
    ping-C4192.168.10.1
  • $ssh->exec()之前执行
    $ssh->setTimeout(4)

  • 我看到你编辑了你的问题,这部分使我的答案无效。不管怎样,idk
    show clients
    应该做什么。也许它期待着用户的输入,或者可能发生了其他事情。你能在
    $ssh->setTImeout(5)
    之前执行
    $ssh->exec()
    并将你得到的作为输出发布吗?@neubert thanx用于回放。正常情况下,“show clients”将返回一个表,其中包含客户端信息,如mac、ip上传数据、下载数据等(在putty和linux openssh客户端中)。但是,当我按照您的建议尝试时(包括setTimeout(4)),它没有显示任何内容。我还尝试使用getLogs()获取日志,它显示(在日志中)无法获取终端属性您可能需要执行
    $ssh->enablePTY()
    。如果您可以将日志放在pastebin.com上,然后编辑您的帖子,使其包含可能有帮助的pastebin.com链接,那么查看日志也可以提供更多信息。@neubert现在我尝试使用$ssh->enablePTY(),现在$ssh->exec()返回一(1)。如何获取数据?执行
    echo$ssh->read()