有问题的功能: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。
答案 0 :(得分:2)
如果您需要在同一个驱动器中的文件夹之间移动,它将无论平台如何都能正常工作(如果您拥有正确的权限)。
如果您需要在不同的驱动器之间移动(例如。rename("C:\\some\\folder", "D:\\another\\place");
,那么您可以尝试rename
并使用copy
和remove
作为后备:
$orig = "C:\\some\\folder";
$dest = "D:\\another\\place";
if (rename($orig, $dest) === false) {
copy_recursive($orig, $dest);
remove_recursive($orig);
}
在PHP中,不存在copy_recursive
或remove_recursive
函数,但您可以在网络中找到多个实现。