PHP无法重命名文件
我想重命名几个我已经读过并排序过的文件。但不幸的是,php脚本运行,但文件没有重命名。你知道为什么吗。路径是正确的。我还确保我有权使用chmod访问每个文件PHP无法重命名文件,php,rename,Php,Rename,我想重命名几个我已经读过并排序过的文件。但不幸的是,php脚本运行,但文件没有重命名。你知道为什么吗。路径是正确的。我还确保我有权使用chmod访问每个文件 <?php $directory = ($_POST['path']); $filecount = 0; $files = glob($directory . "*"); if ($files){ $filecount = count($files); } $allDetails = explode("/", $directo
<?php
$directory = ($_POST['path']);
$filecount = 0;
$files = glob($directory . "*");
if ($files){
$filecount = count($files);
}
$allDetails = explode("/", $directory);
$regNo=($allDetails[1]);
$files = array();
if ($handle = opendir($directory)) {
while (false !== ($file = readdir($handle))) {
if(($file != ".") and ($file != "..")) {
$files[] = $file; // put in array.
}
}
natsort($files); // sort.
$i = 0;
$no = 1;
foreach($files as $file) {
chmod($file, 0777);
if($i==0){
$newName = $regNo."_BOUND_TOP_R.tif";
rename($directory.$file, $newName);
}else if($i==1){
$newName = $regNo."_BOUND_TOP_V.tif";
rename($file, $newName);
}else if($i==$filecount-2){
$newName = $regNo."_BOUND_BOTTOM_R.tif";
rename($file, $newName);
}else if($i==$filecount-1){
$newName = $regNo."_BOUND_BOTTOM_V.tif";
rename($file, $newName);
}else if($i%2 == 0){
$newName = $regNo."_f0000"+$no+"R.tif";
rename($file, $newName);
$no++;
} else if($i%2 == 1){
$newName = $regNo."_f0000"+$no+"V.tif";
rename($file, $newName);
$no++;
}
$i++;
}
closedir($handle);
}
?>
您似乎忘记在其他if语句中输入文件夹名称,您只在第一个if语句中引用$directory:
if($i==0){
$newName = $regNo."_BOUND_TOP_R.tif";
// Does this one work? It has $directory.
rename($directory.$file, $newName);
}else if($i==1){
// but the rest do not
$newName = $regNo."_BOUND_TOP_V.tif";
rename($file, $newName);
}else if($i==$filecount-2){
$newName = $regNo."_BOUND_BOTTOM_R.tif";
rename($file, $newName);
}else if($i==$filecount-1){
$newName = $regNo."_BOUND_BOTTOM_V.tif";
rename($file, $newName);
}else if($i%2 == 0){
$newName = $regNo."_f0000"+$no+"R.tif";
rename($file, $newName);
$no++;
} else if($i%2 == 1){
$newName = $regNo."_f0000"+$no+"V.tif";
rename($file, $newName);
$no++;
}
$i++;
}
根据Jibstroos的评论,将连接符改为
,而不是+
:
$newName = $regNo."_f0000"+$no+"V.tif";
应该是
$newName = $regNo . '_f0000' . $no . 'V.tif';
错误在说什么?打开错误报告?抱歉,我是PHP新手…在哪里可以看到错误报告?请看。。。。顺便说一句,您发布的代码是灾难性的……至少要考虑数组映射,而不是所有那些“ifs”和“else”,您可能还需要检查
chmod($file,0777)代码>实际返回。如果为false
,则chmod失败(如果您没有对chmod的写访问权限,则会发生这种情况,并且还会导致重命名失败)。对于字符串连接,请使用
,而不是+
,例如$newName=$regNo.\u f0000“+$no+”V.tif”代码>
$newName = $regNo . '_f0000' . $no . 'V.tif';