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

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

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

例如,我的代码在 PHP 脚本上如下所示:

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

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


德玛西亚99
浏览 68回答 1
1回答

慕姐4208626

我建议使用一个有助于 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
打开App,查看更多内容
随时随地看视频慕课网APP