PHPの挙動不審が直った

 もっと優先してやることがあるんだが、つい手間取ってしまった。

<?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は同時に指定してはいけないようだ。