为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 PHP 上检索远程文件并将其存储在本地计算机上(使用 OpenSSH/SCP)?

如何在 PHP 上检索远程文件并将其存储在本地计算机上(使用 OpenSSH/SCP)?

PHP
德玛西亚99 2023-09-22 16:16:56
正如标题所述,我在通过 PHP 从远程 SSH 服务器检索文件时遇到问题。我可以通过 Command Shell 检索该文件,但是当我尝试通过 PHP 检索该文件时,它似乎不起作用。例如,我的代码在 PHP 脚本上如下所示:echo shell_exec(scp $remoteUser@$remoteIP:$remoteFilePath $localFilePath);对于上下文,此 PHP 脚本适用于网页。在执行上述命令之前,我还有另一个 SCP 命令(将本地文件复制到远程服务器)和一个 SSH 命令,这些命令都能够成功执行,没有任何问题(这些命令也是通过 shell_exec() 执行的) 。
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

我建议使用一个有助于 SFTP 或 SCP 使用的库 - 例如idct/sftp-client: https: //github.com/ideaconnect/idct-sftp-client

将其包含在您的项目中,然后创建一个实例:

use IDCT\Networking\Ssh\SftpClient;

use IDCT\Networking\Ssh\Credentials;

$client = new SftpClient();

然后创建设置正确的凭据 - 密码或公钥:


# password

$credentials = Credentials::withPassword($username, $password);

$client->setCredentials($credentials);


# or key:

$credentials = Credentials::withPublicKey($username, $publicKey, $privateKey, $passphrase = null);

$client->setCredentials($credentials);

然后连接并下载您的文件:


$client->connect($host);


# using sftp

$client->download(ENTER_REMOTE_FILE_NAME);


# or scp

$client->scpDownload(ENTER_REMOTE_FILE_NAME);


$client->close();

它比使用不太安全和系统依赖的 更加优雅shell_exec。您也可以自己使用所有方法:等ssh2_scp_recv。ssh2_connect


查看完整回答
反对 回复 2023-09-22
  • 1 回答
  • 0 关注
  • 62 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信