12

我想从此代码重命名picture文件名(不带扩展名) 。old.jpg

picture在父目录中有文件并且路径正确

$old="picture";
$new="old.jpg";
rename($old , $new);

或此代码

$old="\picture";
$new="\old.jpg";
rename($old , $new);

$old="../picture";
$new="../old.jpg";
rename($old , $new);

$old="../picture";
$new="old.jpg";
rename($old , $new);

$old="./picture";
$new="./old.jpg";
rename($old , $new);

rename("picture", "old.jpg");

但我得到这个错误:

 Warning: rename(picture,old.jpg) [function.rename]: The system cannot find the file specified. (code: 2) in C:\xampp\htdocs\prj\change.php on line 21
4

4 回答 4

9

您需要使用绝对路径或相对路径(在这种情况下可能会更好)。如果它在父目录中,请尝试以下代码:

old = '..' . DIRECTORY_SEPARATOR . 'picture';
$new = '..' . DIRECTORY_SEPARATOR . 'old.jpg';
rename($old , $new);
于 2012-11-17T21:27:32.553 回答
9

相对路径基于正在执行的脚本($_SERVER['SCRIPT_FILENAME']在 Web 服务器中运行时),该脚本并不总是发生文件操作的文件:

// index.php
include('includes/mylib.php');

// mylib.php
rename('picture', 'img506.jpg'); // looks for 'picture' in ../

查找相对路径涉及比较执行脚本和您希望操作的文件的绝对路径,例如:

/var/www/html/index.php
/var/www/images/picture

在此示例中,相对路径为:../images/picture

于 2012-11-19T01:49:59.187 回答
4

就像 Seth 和 Jack 提到的那样,出现错误是因为脚本找不到旧文件。你让它看起来在当前目录中,而不是它的父目录。

要解决此问题,请输入旧文件的完整路径,或尝试以下操作:

rename("../picture.jpg", "old.jpg");

../遍历单个目录,在本例中为父目录。在 Windows 中也可以使用../,无需使用反斜杠。

如果您在进行这些更改后仍然收到错误,那么您可能需要发布您的目录结构,以便我们都可以查看它。

于 2012-11-17T21:26:41.787 回答
0

可能您(即发出rename()命令时的脚本)不在您认为的目录中(和/或文件所在的位置)。要调试,首先显示目录中的文件列表:

  $d=@dir(".");// or experiment with other directories, e.g. "../files"
  while($e=$d->read()) { echo $e,"</br>"; }

找到包含文件的目录后,您可以更改到该目录,然后在没有任何路径的情况下进行重命名:

  chdir("../files"); // for example
  // here you can print again the dir.contents for debugging as above
  rename( "picture", "img.jpg" ); // args are: $old, $new
  // here you can print again the dir.contents for debugging as above

参考:

于 2020-08-04T09:07:58.407 回答