__sleep() strange behavior with file writting and SESSION using

From: Date: Tue, 20 Nov 2007 18:51:19 +0000
Subject: __sleep() strange behavior with file writting and SESSION using
Groups: php.general 
Request: Send a blank email to php-general+get-264875@lists.php.net to get a copy of this message
Consider that very simple code, that runs on PHP 5.2.5 onto a Windows machine : <?php class a { public $b; public function __sleep() { file_put_contents("log.txt","ok" . PHP_EOL,FILE_APPEND); echo "done!"; return array(); } } $a = new a; serialize($a); ?> No problem here, log.txt is writtable, when it passes on the serialize() instruction, it goes to __sleep and works well. "OK\r\n" is appended to the log file , and "done!" is displayed. Now consider this : <?php session_start(); class a { public $b; public function __sleep() { file_put_contents("log.txt","ok" . PHP_EOL,FILE_APPEND); echo "done!"; return array(); } } $a = new a; $_SESSION['obj'] = $a; ?> In this case, when the object is going in the session, it naturally passes throught __sleep(). The problem is that file_put_contents() doesn't work -> the file is not appended "OK\r\n" as it should be. "done!" is displayed , and if you look at the return value of file_put_contents ( number of bytes that have been written ) : it's all right ! It simply doesn not write to the file. Anyone has an idea ? Is this a bug ? Thx :)

« previous php.general (#264875) next »