Есть код, и он работает не совсем так как хотелось.
Вот чисто ради для теста записал так (было много разных вариантов, особенно с размещением clearstatcache):
$file = 'test/main.tpl';
var_dump(filesize($file));
clearstatcache();
if (file_exists($file)) {
$handle = fopen($file, "w+") or die("Unable to open file!");
} else {
$handle = fopen($file, "x") or die("Unable to create file!");
}
clearstatcache();
var_dump($file);
clearstatcache();
var_dump(filesize($file));
if (filesize($file)) {
$str_old_contains = fread($handle, filesize($file));
var_dump($str);
} else {
echo('error_size : ' . filesize($file));
$str_old_contains = '';
}
fwrite($handle, $str_old_contains . "fear!!! things!\r\n");
clearstatcache();
fclose($handle);
Результат такой:
int 17
string 'test/main.tpl' (length=13)
int 0
error_size : 0
Суть в том, если допустим убрать первый var_dump, то потом по коду он не может определить размер файла — возвращаемый результат ноль (не false, и файл не пустой — две строки).
Что я делаю не так я так и не смог нагуглить. Подскажите советами где какой вызов должен быть.
Я всего лишь хотел, чтобы при отсутсвии файла он создавался, а при его не нулевом размере считывалось его содержание, немного изменялось и перезаписывалось.