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

时间:2010-05-25 20:49:17

标签: php

我有一个包含许多文件和目录的网站。这些目录有几个层次。问题是他们在错误的目录中。它们位于/www/upload/site/,所有内容都应移至/www/。是否有一个简短的脚本来移动两个目录?

谢谢。

3 个答案:

答案 0 :(得分:1)

正如其他回答者所指出的,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);

此过程效率低下,因为使用Rename FunctionCopy Function这样的简单方法在您的情况下不起作用。重命名将要求您“重命名为”的目录为空,这不是因为您正在从其中移动,复制无法复制完整目录。因此,我们留下进程或循环遍历每个文件,并使用PHP的重命名功能手动将其移动到新位置。

因此,虽然这个过程肯定不是PHP所必需的,但完全可以做到这一点,知道如何总是有用的。有关使用文件/目录的更多信息,请阅读PHP's File System Functions

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我不知道服务器是如何设置的,但可能这不起作用,因为运行php脚本的用户不太可能有权移动你上传的文件(除非他们是使用php脚本上传的良好...)。

你当然可以尝试这样的事情:

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

但我会非常小心。