繁体   English   中英

如何使用PHP批量移动文件和目录

[英]How do you bulk move files and directories with PHP

我的网站上有很多文件和目录。 目录有几个层次。 问题在于它们位于错误的目录中。 它们位于/www/upload/site/ ,所有内容都应移至/www/ 是否有简短的脚本将所有两个目录上移?

谢谢。

正如其他回答者所指出的那样,PHP并不是解决这个问题的最优雅的解决方案,而下载FTP程序来移动文件要容易得多。 但是,如果您确实想使用PHP实现此功能,则可以编写类似以下内容的代码:

$dir=opendir('/www/upload/site/');

while ($file = readdir($dir)) {
    if ($file == '.' || $file == '..') continue; // skip references to self

    rename('/www/upload/site/'.$file, '/www/'.$file);
}

closedir($dir);

此过程效率低下,并且由于使用更简单的方法(例如使用“ 重命名功能”或“ 复制功能”)在您的情况下不起作用而导致。 重命名将要求您“重新命名”到的目录为空,而不是从目录中移出时不是,复制不能复制完整目录。 因此,我们只需要处理或循环遍历每个文件,然后使用PHP在每个单独项目上的重命名功能,将其手动移动到新位置。

因此,尽管这一过程当然不是PHP所必需的,但完全有可能做到这一点,并且拥有专门知识总是很有用的。 值得阅读PHP的文件系统功能以获取有关处理文件/目录的更多信息。

您不需要脚本。 获得一个良好的ftp程序,例如FileZillaFireFTP (需要firefox),您只需选择全部,然后将www/upload/所有文件夹和文件拖到www/upload ,ftp程序就会为您移动它们。

我不知道服务器的设置方式,但是可能无法正常运行,因为运行php脚本的用户不太可能具有移动您上传的文件的权限(除非它们也是使用php脚本上传的。) )。

您当然可以尝试类似的方法:

<?php
    exec('mv /www/upload/site/* /www');
?>

但是我会非常小心。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM