1

「thumbs」というフォルダにファイルがあります。それらは、元の作成者によってどのように命名/改名されたかに基づいて名前が付けられています。それらの名前を2桁の順番に変更したいのですが、この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. 「親指」フォルダー (ランダムな名前の画像が含まれています)

両方のフォルダーは同じレベルにあります。

両方が異なるフォルダーにある場合、「rename.php」を実行するにはどうすればよいですか。

含めようとしました$path = '../thumbs';が、機能しませんでした。

なぜ機能しないのですか?

4

3 に答える 3

1

実際にエラーが報告されているかどうかを確認することから始めると思います。エラーなしで空白のページしか取得できないと言っているので、エラー報告を有効にして実際に何が問題なのかを確認するのと同じくらい簡単です。

たとえば、PHP がサムフォルダーへの書き込みアクセス権を持っていない場合、ファイルの名前を変更しようとすると、おそらく一連の警告が表示されます。php.ini を確認しdisplay_errors = On、スクリプトを再度実行して、役立つエラー メッセージが表示されるかどうかを確認します。

それがあなたに役立つかどうか(またはdisplay_errorsすでにオンに設定されているかどうか)はわかりませんが、それが私が試す最初のステップになるでしょう。

于 2013-03-04T19:46:09.730 に答える
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 に答える
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 に答える