微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

到 sftp 服务器的 ssh2 连接在 Laravel 中不起作用

如何解决到 sftp 服务器的 ssh2 连接在 Laravel 中不起作用

我正在尝试在 lavarel 项目中连接到带有 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();
        }

     }
}

这是邮递员的错误响应:

regex demo

如您所见,由于某种原因,catch 没有捕获错误

我正在使用 PHP 7.2 版

有什么想法吗?

提前致谢

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。