[PHP-users 7505] PHPLIBセッションとオブジェクト

Watanabe Takehiro php-users@php.gr.jp
Thu, 16 May 2002 15:07:34 +0900


渡辺(雄)@NTT-ITです。

セッションの使い方について教えてください。
PHPLIBのセッション関数の勉強のために session_sample3.php をつくりました。
しかし、リロードをすると下記のエラーが出てしまいます。
Fatal error: Cannot instantiate non-existent class: test1 in 
/usr/local/apache/phplib-7.2c/php/session.inc(329) : eval()'d code on line 1
クラス test2002 を登録しなければ何の問題もなく動作します。
オブジェクトを登録するには同様にしたらよいのでしょうか?

環境
Redhat6.2
Apache1.3.19
PHP 4.0.6
PostgreSQL 7.1.2

.htaccsess 内でauto_prepend_file を使い
page_open、page_closeは必ず呼んでいます。
PHPLIBをつかったユーザ認証は正しく行えています。

======= session_sample3.php ======
<?php
class test2002{
	var $classname = "test2002";
	var $persistent_slots = array("hoge");
	var $hoge;
}
$t2002 = new test2002;

$sess->register("counter");
$sess->register("t2002");     <------ この行がなければエラーは出ない

$counter++;
$t2002->hoge++;
?>

<?
 echo "counter $counter <BR>";        ←これはちゃんと値が増えます。
 echo "hoge $t2002->hoge <BR>";
?>
<a href="session_sample3.php"> りろーど </a><BR>
=========================================
============ login.inc ==================
<?php
include ("prepend.php");
page_open(
    array("sess" => "Example_Session",
          "auth" => "pfAuth",
          "perm" => "Example_Perm",
          "user" => "Example_User"));
?>
=========================================
#######################################################
別のディレクトリでauto_prepend_fileを呼ばないところで
下記のスクリプトが問題なく動作しています。

======= session_sample2.php ======
<?php
include ("prepend.php");
class test1{
	var $classname = "test1";
	var $persistent_slots = array("hoge");
	var $hoge;
}
page_open(array("sess"=>"Example_Session"));
$test = new test1;         <----- 「あ」

$sess->register("counter");
$sess->register("test");

$counter++;
$test->hoge++;             <------ 「あ」があるので毎度値が
                                    クリアされてしまうのは
                                    織り込み済みです。
page_close();
?>
<?
 echo "counter $counter <BR>";
 echo "hoge $test->hoge <BR>"; 
?>
<a href="session_sample2.php"> リロード </a>
==================================