-3

これは、ディレクトリ内のすべてのファイルを 1 時間以上経過した別のディレクトリに移動するコードです。

<?php
$srcDir = 'code';
$destDir = 'code/old';

if (file_exists($destDir)) {
  if (is_dir($destDir)) {
    if (is_writable($destDir)) {
      if ($handle = opendir($srcDir)) {
        while (false !== ($file = readdir($handle))) {
          if (is_file($srcDir . '/' . $file)) {
              if(date("U",filectime($srcDir . '/' . $file) >= time() - 3600) {
                rename($srcDir . '/' . $file, $destDir . '/' . $file);
                }

          }
        }
        closedir($handle);
      } else {
        echo "$srcDir could not be opened.\n";
      }
    } else {
      echo "$destDir is not writable!\n";
    }
  } else {
    echo "$destDir is not a directory!\n";
  }
} else {
  echo "$destDir does not exist\n";
}
?>

そして、私はこのエラーが発生しています:

Parse error: syntax error, unexpected '{' in /home/tcity/public_html/myDir/movefiles.php on line 11
4

3 に答える 3

5

ここに閉じ括弧がありません:

if(date("U",filectime($srcDir . '/' . $file) >= time() - 3600) {
                                            ^

&&また、演算子を使用して論理ステートメントを結合することも学ぶ必要があります。ただし、フィードバックを提供したいようです。入れ子が多すぎると読みにくくなります。これらすべてのテストを個別に行いたい場合は、次のようにします。

if (!file_exists($destDir))
{
    echo "$destDir does not exist\n";
}
elseif (!is_dir($destDir))
{
    echo "$destDir is not a directory!\n";
}
elseif (!is_writable($destDir))
{
    echo "$destDir is not writable!\n";
}
elseif (...)
{

}
else
{
   while (...) {
   }
}
于 2013-06-24T22:15:41.863 に答える
1

関数呼び出しで閉じ括弧を見逃しているという事実に加えてdate()、コードをより適切にフォーマットすることも検討する必要があります。エラーを見て見つけるのが難しすぎます (肌で感じました)。あなたのために仕事をする関数を書いてください:

function pleaseDontMakeFunOfTheOtherDevelopers($srcDir, $destDir) {
    if (!is_dir($srcDir)) {
        return "$destDir does not exist\n";
    }
    if (is_writable($destDir)) {
        return "$destDir is not writable!\n";
    }

    if (!($handle = opendir($srcDir))) {
        return "$srcDir could not be opened.\n";
    }

    while (false !== ($file = readdir($handle))) {
      if (is_file($srcDir . '/' . $file) && date("U", filectime($srcDir . '/' . $file)) >= time() - 3600) {
        rename($srcDir . '/' . $file, $destDir . '/' . $file);
      }
    }
    closedir($handle);

    return true;
}

LE: 関数の名前を変更する必要があることは明らかです :)

于 2013-06-24T22:20:29.863 に答える
0

閉じ括弧がありません。

if(date("U",filectime($srcDir . '/' . $file) >= time() - 3600) {

になる

if(date("U",filectime($srcDir . '/' . $file)) >= time() - 3600) {

これはテストされていません

于 2013-06-24T22:18:01.670 に答える