当我尝试关闭ssh2连接时,没有响应

时间:2019-02-25 06:37:53

标签: php ssh2-sftp ssh2

我编写了一个php脚本,以在装有php7.3的apache服务器上本地执行以下操作:

  1. 通过ssh2访问服务器
  2. 检查文件是否存在
  3. 关闭连接
  4. 打印json数据对象作为响应。

脚本可以正常工作,除了关闭连接。如果添加ssh2_disconnect函数,则不会返回任何响应。我想念什么? 这是我的代码:

<?php

error_reporting(1);
ini_set('display_errors', '1');

    $config = ["server"=>"10.1.201.1","port"=>"22","user"=>"root","password"=>"root","folder"=>"/"];
    $files = ["file1.pdf","file2.pdf"];
    $result = [];
    $ftpConnect = ssh2_connect($config['server'],$config['port']);
        ssh2_auth_password($ftpConnect,$config['user'],$config['password']);
    $sftp = ssh2_sftp($ftpConnect);

foreach ($files as $file){
    $fileExists = file_exists("ssh2.sftp://". intval($sftp) . $config['folder'] . $file);
        if($fileExists){
            $result[$file]= ["status"=>"Found"];
        }else $result[$file]= ["status"=>"Not found"];
}
//ssh2_disconnect($ftpConnect); only if uncommented, script wouldn't work
header('content-type:text/json; charset=UTF-8');
echo json_encode($result);
?>

1 个答案:

答案 0 :(得分:0)

似乎取决于版本。 ssh2_disconnect是您过去可与PECL ssh2 >= 1.0一起使用的唯一功能,所有其他ssh2函数均可用于PECL ssh2 >= 0.9.0. 以下注释使我们认为也需要php> = 7。

http://php.net/manual/function.ssh2-disconnect.php#123413

这是他建议在ssh2_disconnect不可用的情况下关闭连接的方法:

$session = null; unset($session); // close connection