__sleep() strange behavior with file writting and SESSION using

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 :)

[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux