到 sftp 服务器的 ssh2 连接在 laravel 中不工作
ssh2 connection to sftp server not working in 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();
}
}
}
这是邮递员中的错误响应:
如您所见,由于某种原因,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
。
我正在尝试连接到 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();
}
}
}
这是邮递员中的错误响应:
如您所见,由于某种原因,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
。