This aint a bug because __sleep is called only when you serialize an object and not when you assign it to a session Variable; On Nov 21, 2007 12:21 AM, Julien Pauli <doctorrock83@xxxxxxxxx> wrote: > 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 :) > -- Have A plesant Day Chetan. D. Rane Location: India Contact: +91-9844922489 otherID: chetscool@xxxxxxxxx chetrane@xxxxxxxxxxxxxx