在PHP中移动整个目录树的最佳方法

时间:2012-09-09 07:13:39

标签: php copy directory file-rename

我想将文件从一个目录移动到另一个目录。但是,诀窍是,我想用整个路径移动文件。

说我有文件

/my/current/directory/file.jpg

我想把它移到

/newfolder/my/current/directory/file.jpg

因此,你可以看到我想保留相对路径,以便将来如果我需要,我可以将其移回/my/current/directory/。还有一件事是/newfolder是空的 - 我可以在那里复制任何东西,所以没有预先制作的结构(另一个文件可能被复制到/newfolder/my/another/folder/anotherfile.gif。理想情况下我希望能够创建一个我将原始路径传递给文件时将会发挥作用的方法。目的地始终相同 - /newfolder/...

2 个答案:

答案 0 :(得分:0)

您只需使用以下

即可
<?php 
$output = `mv "/my/current/directory/file.jpg" "/newfolder/my/current/directory/file.jpg"`; 
if ($output == 0) { 
   echo "success"; 
} else { 
   echo "fail"; 
} 
?>

请注意我使用反引号来执行而不是使用像exec

这样的函数

答案 1 :(得分:0)

如果您在unix / linux环境中,可以尝试这样的事情:

$original_file = '/my/current/directory/file.jpg';
$new_file = "/newfolder{$original_file}";

// create new diretory stricture (note the "-p" option of mkdir)
$new_dir = dirname($new_file);
if (!is_dir($new_dir)) {
    $command = 'mkdir -p ' . escapeshellarg($new_dir);
    exec($command);
}

echo rename($original_file, $new_file) ? 'success' : 'failed';