代码之家  ›  专栏  ›  技术社区  ›  Majid Fouladpour

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

php
  •  2
  • Majid Fouladpour  · 技术社区  · 15 年前

    我有一个有很多文件和目录的网站。目录有几个层次。问题是它们在错误的目录中。他们在 /www/upload/site/ 一切都应该转移到 /www/ . 是否有一个简短的脚本可以将两个目录全部上移?

    谢谢您。

    3 回复  |  直到 15 年前
        1
  •  1
  •   JoeR    15 年前

    正如其他回答者所指出的,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 Function Copy Function 在你的情况下不起作用。重命名将要求您要“重命名为”的目录为空,而不是从其中移动的目录。复制无法复制完整的目录。因此,我们只剩下进程或循环遍历每个文件,并使用php的rename函数手动将其移动到一个新的位置。

    因此,虽然这个过程当然不是PHP所必需的,但是完全可以做到这一点,并且拥有专有技术总是很有用的。值得一读 PHP's File System Functions 有关使用文件/目录的详细信息。

        2
  •  0
  •   Ali    15 年前

    你不需要剧本。获取一个好的FTP程序,例如 FileZilla FireFTP (需要火狐),你只需选择全部,然后将所有文件夹和文件拖到 www/upload/ www/upload ,ftp程序将为您移动它们。

        3
  •  0
  •   jeroen    15 年前

    我不知道服务器是如何设置的,但这可能不起作用,因为运行php脚本的用户不太可能有权限移动您上载的文件(除非使用php脚本上载这些文件…)。

    当然,你可以尝试以下方法:

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

    但我会非常小心的。

    推荐文章