无法使用 ssh2_scp_recv 和 ssh2_scp_send 发送或接收文件

发布于 2024-12-11 06:37:03 字数 704 浏览 0 评论 0原文

不知道出了什么问题,但我无法使用 SSH 发送或接收文件。

我正在使用以下代码,

define('SSH_HOST', 'HOST');
define('SSH_USER', 'USER');
define('SSH_PASS', 'PASSWORD');
$connection = ssh2_connect(SSH_HOST, 22);
ssh2_auth_password($connection, SSH_USER, SSH_PASS); 

$remoteFile = '/remote/absolute/path/file.ext';
$localFile = '/local/absolute/path/file.ext';

if(ssh2_scp_recv($connection, $remoteFile, $localFile)){
    echo("received");
}else{
    echo("NOT received");
}

此函数和 file_get_contents 函数都不起作用。 奇怪的是,我可以通过调用

$sftp = ssh2_sftp($connection);
$statinfo = ssh2_sftp_stat($sftp, $remoteFile);

但无法读取文件数据来获取文件统计信息。

我必须在任一服务器上设置一些特殊权限吗?

Not sure what's wrong but I am unable to send or receive file using SSH.

I am using the following code

define('SSH_HOST', 'HOST');
define('SSH_USER', 'USER');
define('SSH_PASS', 'PASSWORD');
$connection = ssh2_connect(SSH_HOST, 22);
ssh2_auth_password($connection, SSH_USER, SSH_PASS); 

$remoteFile = '/remote/absolute/path/file.ext';
$localFile = '/local/absolute/path/file.ext';

if(ssh2_scp_recv($connection, $remoteFile, $localFile)){
    echo("received");
}else{
    echo("NOT received");
}

Neither this nor file_get_contents function is working.
The strange thing is that I am able to get file stats by calling

$sftp = ssh2_sftp($connection);
$statinfo = ssh2_sftp_stat($sftp, $remoteFile);

But unable to read file data.

Is there some special permission I have to set on either server?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

江心雾 2024-12-18 06:37:03

SCP 和 SFTP 是不同的东西。可能您的服务器上禁用了 SCP。

SCP and SFTP are different things. Probably, SCP is disabled on your server.

☆獨立☆ 2024-12-18 06:37:03

我会使用 phpseclib,一个纯 PHP SFTP 实现。由于其日志记录功能,更易于使用和诊断问题。 IE。

<?php
include('Net/SFTP.php');
define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX);

$ssh = new Net_SFTP('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}

$ssh->put('filename.ext', 'zzzzzzzzzzzzzzz');
echo $ssh->getLog();
?>

I would use phpseclib, a pure PHP SFTP implementation. Easier to use and easier to diagnose problems with it due to its logging capabilities. ie.

<?php
include('Net/SFTP.php');
define('NET_SSH2_LOGGING', NET_SSH2_LOG_COMPLEX);

$ssh = new Net_SFTP('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}

$ssh->put('filename.ext', 'zzzzzzzzzzzzzzz');
echo $ssh->getLog();
?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文