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



正如标题所述,我在通过PHP从远程SSH服务器检索文件时遇到了问题。

我可以通过命令行Shell检索文件,但当我尝试通过PHP检索时,它似乎不起作用。

例如,这就是我的代码在PHP脚本上的样子:

echo shell_exec(scp $remoteUser@$remoteIP:$remoteFilePath $localFilePath);

就上下文而言,此PHP脚本适用于网页。在执行上述命令之前,我还有另一个SCP命令(将本地文件复制到远程服务器(和一个SSH命令,这些命令能够成功执行,没有任何问题(这些命令也是通过shell_exec((执行的(。

我建议使用一个库来帮助SFTP或SCP的使用,例如idct/SFTP客户端:https://github.com/ideaconnect/idct-sftp-client

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

use IDCTNetworkingSshSftpClient;
use IDCTNetworkingSshCredentials;
$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_recvssh2_connect

相关内容

  • 没有找到相关文章

最新更新