Итак, IceBeerG, сейчас я буду критиковать ваш скрипт... Во-первых, вы нерационально используете переменную $filename. Вы открываете файл, используя переменную $filename: $fp=@fopen($filename, "r"); Далее пишете or die ("Ошибка при открытии файла counter.txt"); Здесь уже используется конкретное имя файла. Также конкретное имя файла используется при проверке на существование файла. Я рекомендую вам сделать так: $filename="counter.txt"; //присваиваем переменной имя файла в котором будут храниться данные $fp=@fopen($filename, "r") or die ("Ошибка при открытии файла ".$filename); //открываем файл на чтение if (file_exists($filename)); //Проверяем существование файла счетчика Таким образом, скрипт становится мобильнее - вам нужно всего лишь поменять значение переменной $filename, чтобы изменить файл счетчика. Во-вторых, вам не кажется, что логичнее было бы сначало проверить файл на существование, а потом пытаться его открыть? В-третьих, одно из правил программирования на PHP - делать скрипты максимально автономными. И в вашем случае это возможно - вместо того, чтобы выводить сообщение о несуществовании файла, вы можете создать этот файл вручную. Вот скрипт, который я предлагаю вам использовать. Это тот же ваш скрипт, только немного переделанный: <html> <body> Счетчик посещений <?php $filename="counter.dat"; if (!file_exists($filename)){ $fh = @fopen($filename, "w+"); fputs($fh, '0'); fclose($fh); } $fp=fopen($filename, "r") or die ("Ошибка при открытии файла ".$filename); $counter = fread($fp, filesize($filename)); fclose($fp); echo ++$counter; $fp=@fopen($filename, "w"); $counter=fputs($fp, $counter); fclose($fp); ?> </body> </html> Комментраии я не писал, я думаю, однако, если вы в них нуждаетесь, то я напишу. К слову, такой счетчик нормально работает и с файлом counter.dat, и создает файл самостоятельно, без какого-либо вашего вмешательства.