我有一个包含许多文件和目录的网站。这些目录有几个层次。问题是他们在错误的目录中。它们位于/www/upload/site/
,所有内容都应移至/www/
。是否有一个简短的脚本来移动两个目录?
谢谢。
答案 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 Function或Copy Function这样的简单方法在您的情况下不起作用。重命名将要求您“重命名为”的目录为空,这不是因为您正在从其中移动,复制无法复制完整目录。因此,我们留下进程或循环遍历每个文件,并使用PHP的重命名功能手动将其移动到新位置。
因此,虽然这个过程肯定不是PHP所必需的,但完全可以做到这一点,知道如何总是有用的。有关使用文件/目录的更多信息,请阅读PHP's File System Functions。
答案 1 :(得分:0)
您不需要脚本。获得一个好的ftp程序,例如FileZilla或FireFTP(需要firefox),您只需选择所有,然后将www/upload/
中的所有文件夹和文件拖到www/upload
,并且ftp程序将为您移动它们。
答案 2 :(得分:0)
我不知道服务器是如何设置的,但可能这不起作用,因为运行php脚本的用户不太可能有权移动你上传的文件(除非他们是使用php脚本上传的良好...)。
你当然可以尝试这样的事情:
<?php
exec('mv /www/upload/site/* /www');
?>
但我会非常小心。