__sleep() strange behavior with file writting and SESSION using
| From: | Julien Pauli | 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 :)