もっと優先してやることがあるんだが、つい手間取ってしまった。
<?php error_reporting(E_ALL); $timestamp = 1225000000; $file = "temp.txt"; touch($file,$timestamp); sleep(2); echo $timestamp,"\n",filemtime($file); ?>
で、結果が
1225000000
1224967600
どうやらtouchがうまくタイムゾーンを解釈できないようにみえる。
ずいぶん悩んだが、環境変数TZを削除したら直った。どうやらphp.iniと環境変数TZは同時に指定してはいけないようだ。