PHP重命名/复制... file_put / get_contents?

时间:2012-03-15 06:00:20

标签: php copy rename file-get-contents

我已经为我的问题尝试了一大堆修复但没有遇到可行的解决方案...
问题很简单......
假设你有这个目录结构:

/website
  /admin
    /phpscript.php
  /img
    /folder1
      /image1.png
      /image2.png

我基本上要做的是: 创建一个文件夹...例如:folder2

/website
  /admin
    /phpscript.php
  /img
    /folder1
      /image1.png
      /image2.png
    /folder2

然后将image1和image2移动到folder2

php脚本位于 admin 中,这是我设计要执行的移动操作的地方。

我试过了:
<{1}}失败了

rename('../img/folder1/image1.png', '../img/folder2/image1.png');也失败了


当文件的路径相同时,我可以使用复制和重命名...例如:

copy('../img/folder1/image1.png', '../img/folder2/image1.png');

将image1.png重命名为image3.png(服务器上不再存在image1.png,服务器创建了image3.png)

rename('../img/folder1/image1.png', '../img/folder1/image3.png');

这使得image1.png的副本名为image3.png(image1.png和image3.png都在服务器上) apache服务器中的文件夹的所有权限
......我注意到你可以做到:

copy('../img/folder1/image1.png', '../img/folder1/image3.png');

只要文件夹存在...由于某种原因,当在file_put_contents()之前使用mkdir()时它不喜欢移动

这基本上是我的代码:

file_get_contents('../img/folder1/image1.png')
and then do
file_put_contents('../img/folder2/image1.png')

2 个答案:

答案 0 :(得分:0)

尝试使用以下代码段。确保您有足够的权限执行exec命令

<?php
$cmd = 'mv "../img/folder1/image1.png" "../img/folder2/image1.png"';
exec($cmd, $output, $return_val);

if ($return_val == 0) {
   echo "success";
} else {
   echo "failed";
}
?>

答案 1 :(得分:0)

我找到了问题的答案......

这是我正在使用的服务器上的权限问题。

我能够转移到另一台服务器,现在我可以使用重命名功能。

现在我知道-.-

$old_folder = 'image/folder1';
$new_folder = 'image/folder2';

rename($old_folder, $new_folder);

这通常是我在网上看到的许可问题... derp!