ここに新しいphpプログラマー。拡張子を置き換えて、フォルダー内のすべてのファイルの名前を変更しようとしています。
私が使用しているコードは、SOに関する同様の質問への回答からのものです。
if ($handle = opendir('/public_html/testfolder/')) {
while (false !== ($fileName = readdir($handle))) {
$newName = str_replace(".php",".html",$fileName);
rename($fileName, $newName);
}
closedir($handle);
}
コードを実行してもエラーは発生しませんが、ファイル名は変更されません。
これが機能しない理由についての洞察はありますか? 私の許可設定はそれを許可するはずです。
前もって感謝します。
編集: rename() の戻り値をチェックするときに空白のページが表示されますが、opendir よりも優れたオプションである可能性がある glob() で何かを試しています...?
編集 2: 以下の 2 番目のコード スニペットを使用すると、$newfiles の内容を出力できます。したがって、配列は存在しますが、str_replace + rename() スニペットはファイル名の変更に失敗します。
$files = glob('testfolder/*');
foreach($files as $newfiles)
{
//This code doesn't work:
$change = str_replace('php','html',$newfiles);
rename($newfiles,$change);
// But printing $newfiles works fine
print_r($newfiles);
}