Windows上的PHP rename()目录,版本为5.1.0

时间:2014-08-22 11:23:59

标签: php

有问题的功能:http://php.net/manual/en/function.rename.php

文档说5.3.1 rename() can now rename files across drives in Windows。它没有说的是旧版本的行为。我在几个地方搜索过这个,我看到有人说它不能在5.3.0以下的Windows上正常移动文件夹,但我需要支持5.1.0+(政府系统,他们喜欢保持旧版,以及我需要同时支持Windows和Linux,因为客户端同时使用这两种方式。

基本上,我的代码所做的是将目录移动到其父目录:rename('some/dir/sub', 'some/dir')我需要知道这是否适用于Windows和Linux上的PHP 5.1.0。

1 个答案:

答案 0 :(得分:2)

如果您需要在同一个驱动器中的文件夹之间移动,它将无论平台如何都能正常工作(如果您拥有正确的权限)。

如果您需要在不同的驱动器之间移动(例如。rename("C:\\some\\folder", "D:\\another\\place");,那么您可以尝试rename并使用copyremove作为后备:

$orig = "C:\\some\\folder";
$dest = "D:\\another\\place";

if (rename($orig, $dest) === false) {
    copy_recursive($orig, $dest);
    remove_recursive($orig);
}

在PHP中,不存在copy_recursiveremove_recursive函数,但您可以在网络中找到多个实现。