PHP 4.0 Bug #6700 Updated: Problem With Objects as Session Variables
| From: | Bug Database | Date: | Wed, 13 Sep 2000 22:17:43 +0000 |
| Subject: | PHP 4.0 Bug #6700 Updated: Problem With Objects as Session Variables | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-33154@lists.php.net to get a copy of this message | ||
ID: 6700
User Update by: dkm@cwcom.net
Status: Assigned
Bug Type: *Session related
Description: Problem With Objects as Session Variables
I' ve found the problem. My php.ini had "session.auto_start = On" which was causing
the session to be started before the class definition was available. So the problem was stated in
the error message after all. Perhaps there is an argument for insisting that users always post
their php.ini, or at least the parts that are relevant to their problem.
Thanks for your help.
David Marley
Previous Comments:
---------------------------------------------------------------------------
[2000-09-12 23:37:31] joey@php.net
Assigning to me unless someone has an answer ready.
---------------------------------------------------------------------------
[2000-09-12 23:36:25] joey@php.net
Ooops. Looks like we were editing at the same time! :)
I'll look into this.
---------------------------------------------------------------------------
[2000-09-12 23:31:12] joey@php.net
Your problem is stated right in the error message.
PHP needs the class definition to be loaded in order
to reconstruct the object.
In other words:
sencond.php needs person.inc, also
---------------------------------------------------------------------------
[2000-09-12 23:30:56] dkm@cwcom.net
I missed out the require statement in second.php. The actual script is:
second.php
==========
<?
require("person.inc");
session_start();
?>
<html>
<head>
<title>Second</title>
</head>
<body>
<? $aperson->display_details(); ?>
</body>
</html
---------------------------------------------------------------------------
[2000-09-12 23:01:39] dkm@cwcom.net
My problem appears to be the same as Bug id #6604 which, as yet, has received no feedback.
While simple variables work fine, I receive the following error with the example scripts below:
"Fatal error: The script tried to execute a method or access a property of an incomplete
object. Please ensure that the class definition person of the object you are trying to operate on
was loaded _before_ the session was started in /usr2/www/test/sessions/second.php on line 6"
If I use $ser_aperson = serialize($aperson) in first.php and unser_aperson =
unserialize($ser_aperson) then unser_aperson->print_details() works fine. I understand that
serialization of objects should be handled automatically by the session module.
person.inc
==========
class person
{
var $first_name = "John";
var $surname = "Smith";
function display_details()
{
print("First Name: ". $this->first_name. "<br>");
print("Surname: ". $this->surname. "<br>");
}
}
first.php
=========
<?
require("person.inc");
session_start();
session_register(aperson);
$aperson = new person;
?>
<html>
<head>
<title>First</title>
</head>
<body>
<a href="second.php">Second</a>
</body>
</html>
second.php
==========
<?
session_start();
?>
<html>
<head>
<title>Second</title>
</head>
<body>
<? $aperson->display_details(); ?>
</body>
</html
---------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view the rest of the comments,
please view the bug report online.
Full Bug description available at: http://bugs.php.net/?id=6700