LINUX.ORG.RU

PHP, деструкторы, работа с файлами

 ,


0

1

Нужно организовать запись лога в файл по окончании работы скрипта:

<?php
class Debug {
        public $log;
        public function tofile() {
                $r = fopen("tmp/log", "a");
                fwrite($r, $this->log);
                return(fclose($r));
        }
        public function __destruct() {
                echo($this->log);
                return($this->tofile());
        }
}

$debug = new Debug();
$debug->log = date("YmdHis\n");
//$debug->tofile();
?>
При выполнении, содержание лога выводится, но файл не создаётся.
Сам метод записи в файл, если вызывать его отдельно, работает исправно.

Да, PHP 5.2.0 — очень старый, может быть в этом дело?

★★

Последнее исправление: Evenik (всего исправлений: 2)

Ответ на: комментарий от shooter93

Может стоит использовать file_put_contents()?

Переписал, ничего не изменилось. Как я уже сказал, сам метод tofile() работает исправно.

<?php
class Debug {
        public $log;
        public function tofile() {
                return(file_put_contents("tmp/log", $this->log, FILE_APPEND));
        }
        public function __destruct() {
                echo($this->log);
                return($this->tofile());
        }
}

$debug = new Debug();
$debug->log = date("YmdHis\n");
//$debug->tofile();
?>

Evenik ★★
() автор топика
Ответ на: комментарий от kiotoze

1. включи вывод ошибок
2. используй абсолютный путь

1. Включен, но молчит.
2. Теперь работает, но почему?

Evenik ★★
() автор топика

Рабочая директория во время фазы завершения скрипта может отличаться в некоторых SAPI (например, в Apache).

Буду знать.
kiotoze, Wolfram, спасибо!

Evenik ★★
() автор топика

по окончании работы скрипта

register_shutdown_function

Kilte ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.