1

我在一个名为“thumbs”的文件夹中有文件。它们的名称基于其原始作者的命名/重命名方式。我想将它们按顺序重命名为两位数,我设法找到了这个 PHP 代码:

function sequentialImages($path, $sort=false) {
 $i = 1;
 $files = glob($path."/{*.gif,*.jpg,*.jpeg,*.png}",GLOB_BRACE|GLOB_NOSORT);

 if ( $sort !== false ) {
  usort($files, $sort);
 }

 $count = count($files);
 foreach ( $files as $file ) {
  $newname = str_pad($i, strlen($count)+1, '0', STR_PAD_LEFT);
  $ext = substr(strrchr($file, '.'), 1);
  $newname = $path.'/'.$newname.'.'.$ext;
  if ( $file != $newname ) {
   rename($file, $newname);  
  }
  $i++;
 }
}

执行此代码的 php 称为“rename.php”,它位于名为“admin”的文件夹中。

因此它们如下

  1. 'admin' 文件夹(包含 rename.php')
  2. 'thumbs' 文件夹(包含随机名称的图像)

两个文件夹位于同一级别。

如果两者都在不同的文件夹中,我该如何执行“rename.php”。

我试图包含$path = '../thumbs';,但它不起作用。

请问为什么不工作?

4

3 回答 3

1

我想我会首先检查您是否真的收到任何错误报告。由于您说您只会得到一个没有任何错误的空白页面,因此它可以像启用错误报告以查看实际出了什么问题一样简单。

例如,如果 PHP 没有对 thumbs 文件夹的写入权限,那么当您尝试重命名文件时,您可能会收到一堆警告。检查您的 php.ini 并确保display_errors = On再次运行该脚本并检查您是否收到任何有用的错误消息。

不确定这是否对您有帮助(或者是否display_errors已经设置为开启),但这将是我尝试的第一步,希望能为您提供有关问题所在的更多详细信息。

于 2013-03-04T19:46:09.730 回答
0
$path = realpath(__DIR__ . '/..') . '/thumbs';

realpath() 函数: http: //php.net/manual/en/function.realpath.php

DIR(和其他魔术常量): http: //php.net/manual/en/language.constants.predefined.php

于 2013-03-04T17:33:24.317 回答
0

在函数顶部添加:

if( !is_dir($path) ) {
  die("error: $path is not a valid directory.");
  // or whatever error handling method you prefer
}

如果由于某种原因,您的服务器上禁用了父路径,或者路径存在其他问题,您将在此处收到通知。

如果一切正常,那么单步执行您的代码并确保一切都符合您的预期。例如:$files具有您期望的内容,$newname格式正确,rename()未返回false,这表明可能由于权限等原因导致错误...

于 2013-03-04T17:24:16.493 回答