【问题标题】:ssh2 connection to sftp server not working in laravelssh2到sftp服务器的连接在laravel中不起作用
【发布时间】:2021-09-21 01:31:32
【问题描述】:

我正在尝试在 lavarel proyect 中连接到具有 ssh2_php 扩展名的 sftp 服务器。 连接在一个简单的 php 脚本中运行良好,但是当我将它带到空白 laravel 项目中的控制器时,相同的代码不起作用。

这是控制器的代码

<?php

namespace App\Http\Controllers;

use Illuminate\Routing\Controller as BaseController;

class Controller extends BaseController
{
    public function test() {

        try {
            $ssh          = ssh2_connect(SFTP_SERVER, 22);
            $login        = ssh2_auth_password($ssh, SFTP_USER, SFTP_PASS);
            $sftp         = ssh2_sftp($ssh);
            $sftp_fd      = intval($sftp);
            $filesystem   = opendir("ssh2.sftp://$sftp_fd/.");
        } catch (\Throwable $e) {
            return $e->getMessage();
        }

     }
}

这是邮递员中的错误响应:

正如你所见,由于某种原因,catch 没有捕捉到错误。

我正在使用 php 7.2 版

有什么想法吗?

提前致谢

【问题讨论】:

    标签: php laravel ssh2


    【解决方案1】:

    ssh2_* 函数在失败时不会抛出异常。阅读文档:https://www.php.net/manual/en/function.ssh2-connect.php(同时查看您正在使用的其他功能)

    如果你想在连接失败时抛出异常,我会这样做:

    $ssh = ssh2_connect(SFTP_SERVER, 22);
    if (!$ssh) throw Exception("ssh2_connect failed");
    # Do the same for the other functions, check their documentation for return values that designate failure
    

    也可能是一切都按预期工作,在这种情况下您根本没有发送响应,这可能解释了ECONNRESET

    【讨论】:

      猜你喜欢
      • 2020-06-14
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-26
      • 1970-01-01
      • 2022-06-15
      相关资源
      最近更新 更多