> -----Original Message----- > From: Julien Pauli [mailto:doctorrock83@xxxxxxxxx] > Sent: Tuesday, November 20, 2007 3:51 PM > To: php-general@xxxxxxxxxxxxx > Subject: __sleep() strange behavior with file writting and > SESSION using > > 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 :) Maybe I drank too much coffee last night, but this is working for me if I add dirname(__FILE__) to "log.txt" (PHP version 5.2.4) and not otherwise <?php session_start(); class a { public $b; public function __sleep() { file_put_contents(dirname(__FILE__)."/log.txt","ok" . PHP_EOL,FILE_APPEND); echo "done!"; return array(); } } $a = new a; $_SESSION['obj'] = $a; ?> -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php