0

画像のディレクトリをスキャンし、幅が 800 ピクセルを超えるものをサイズ変更する cron ジョブを作成しています。また、その日に画像がアップロードされた場合にのみサイズ変更に入る必要があるため、filemtime() を使用しようとしましたが、1969-12-31 が返され続けます。

この問題について見つけたすべてのフォーラム投稿を読みましたが、何も機能していないようです。ローカルの WIN 10 マシン (xamplite を使用) と実稼働の Linux マシンでテストしました。どちらも PHP 5.3 以降を使用しており、まったく同じ結果が得られます。

何が起こっているのかを確認するために追加したエコーと一緒にコードスニペットを次に示します。

$files = scandir($_SERVER['DOCUMENT_ROOT'] . '/forum_functions/image_uploads');

$check_date = date('Y-m-d', strtotime('now'));

echo 'check date is ' . $check_date . '<br>';

foreach ($files as $file)   {

    if ($file != '.' && $file != '..')   {

        echo 'file date is ' . date('Y-m-d', strtotime(filemtime($_SERVER['DOCUMENT_ROOT'] . "/forum_functions/image_uploads/{$file}"))) . '<br>';

        echo 'file is ' . $_SERVER['DOCUMENT_ROOT'] . "/forum_functions/image_uploads/{$file}" . '<br>';

        echo 'file exists ' . file_exists($_SERVER['DOCUMENT_ROOT'] . "/forum_functions/image_uploads/{$file}") . '<br>';

        if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/forum_functions/image_uploads/{$file}") && $check_date == date('Y-m-d', strtotime(filemtime($_SERVER['DOCUMENT_ROOT'] . "/forum_functions/image_uploads/{$file}"))))  {
          // do resizing
           }
       }
   }

foreach ループの最初のエコーでは、すべての画像に対して 1969-12-31 が出力されます

foreach の 2 番目のエコーはパスを正しく出力します

3 番目のエコーは、ファイルが存在する場合は true を返しますが、日付が間違っているため if 条件に入ることができません。

ログで警告を確認しましたが、何もありません。フォルダーのアクセス許可を確認しましたが、すべて問題ありません。

私はちょうどそれを手に入れました!たぶん、私の目が何かを見逃しているか、私が知らない何かが起こっているので、本当にアドバイスを使うことができます.

4

2 に答える 2