使用PHP将文件夹重命名为SFTP服务器上的两个目标文件夹

问题描述 投票:1回答:1

此功能正在运行,并将文件夹从mainfolder移动到一个名为destinationfolder1的文件夹。我想将文件夹也移动到另一个文件夹。名为backup的文件夹,与destinationfolder1在同一个地方/级别。这可能吗?

ssh2_sftp_rename($sftp, 'mainfolder/' . $entry  , 'destinationfolder1/' . $entry );
php sftp
1个回答
0
投票

您不能将文件/文件夹“重命名”为两个文件夹。那是胡说八道。您必须创建文件/文件夹的副本。

核心SFTP协议中没有“复制”功能。这有copy-file SFTP扩展。但PHP SSH2功能不支持它。您可以将扩展名添加到开源phpseclib library。但实际上很少有SFTP服务器支持扩展。特别是最广泛使用的SFTP服务器OpenSSH不支持它。所以这可能不值得尝试。

如果你有一个shell访问服务器,作为一种解决方法,你可以使用cp执行ssh2_exec shell命令:

ssh2_exec($connection, 'cp -r /source/path/file /backup/file');

如果您没有shell访问权限,则唯一的选择是下载文件/文件夹并将其重新上载到其他文件夹。


另见In an SFTP session is it possible to copy one remote file to another location on same remote SFTP server?

© www.soinside.com 2019 - 2024. All rights reserved.