- PR -

PHPのクラスについて

1
投稿者投稿内容
ハムV
常連さん
会議室デビュー日: 2005/11/17
投稿数: 25
投稿日時: 2006-04-06 14:31
宜しくお願いします。

あるWebサーバーで動いているホームページ(HTMLとPHP)を
検証のため別サーバーに移したところ
セッション管理をしているPHPのページを開いた時に
下記エラーが表示されました。
Fatal error: Cannot instantiate non-existent class: hoge_session in /usr/local/lib/php/phplib/page.inc on line 18

もとのサーバーにある「hoge_session」というクラスでセッション管理の設定を
していて、移した先に「hoge_session」というクラスが無いので
エラーが発生したのだと思います。
(↑この考え方で間違ってないでしょうか?)
なので、もとのサーバーから移した先のサーバーへ「hoge_session」クラスを
コピーしてあげれば解決すると思うのですが、この方法が思いつきません。
アドバイスいただけますでしょうか。

宜しくお願い致します。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-04-06 14:43
クラス?FTPで落としてFTPであげりゃいいじゃねぇの?
ハムV
常連さん
会議室デビュー日: 2005/11/17
投稿数: 25
投稿日時: 2006-04-06 15:12
質問者です。回答ありがとうございます。

>クラス?FTPで落としてFTPであげりゃいいじゃねぇの?

とのことですが、クラス?という考え方、間違ってますか?
すみません、まだ勉強はじめたばかりで
どのファイル?を落としてくればいいんでしょうか?

宜しくお願いします。





あるかな
大ベテラン
会議室デビュー日: 2003/11/04
投稿数: 245
投稿日時: 2006-04-06 15:29
セッション管理には、たぶん PHPLIB を使用されていると思いますが、移行先のサーバも設置されていますか?

/usr/local/lib/php/phplib/page.inc on line 18
で何が書かれているかやそのファイルで include されているファイルが全て揃っているか、
またパスは間違っていないか、などはどうでしょうか?

※言葉抜けを修正。

[ メッセージ編集済み 編集者: あるかな 編集日時 2006-04-06 15:29 ]
Lichtenstein
ベテラン
会議室デビュー日: 2003/11/06
投稿数: 61
投稿日時: 2006-04-07 09:25
”別サーバーの/usr/local/lib/php/phplib/page.inc” ってファイルを
どうやって確かめるか? って問題ですよね。

自分で管理しているサーバーなら、質問にならないでしょうし……
管理人に相談した方が良いのでは。
kalze
ぬし
会議室デビュー日: 2003/10/23
投稿数: 406
お住まい・勤務地: 東京・東京
投稿日時: 2006-04-07 09:44
引用:

とのことですが、クラス?という考え方、間違ってますか?
すみません、まだ勉強はじめたばかりで
どのファイル?を落としてくればいいんでしょうか?



PHPのクラスが定義されていない、つまり定義されているファイルが足りないのでしょう。
自分で書いてアップしたものの他に、サーバに仕込まれている(変な言葉ですが)ライブラリがあるのでしょう。
今回の場合はあるかな様も書かれていますが、PHPLIBというライブラリ使っているようですね。
現在はたまたまPHPLIBがないとエラーになっているようですが、もしかしたら他にもライブラリが元サーバには入っているかもしれません。
同じ環境にしたいのであれば、元サーバの管理者にPHPLIBをはじめ、どんなライブラリのどのバージョンのものが入っているか聞いて、今回のサーバにもいれるとよいでしょう。
ハムV
常連さん
会議室デビュー日: 2005/11/17
投稿数: 25
投稿日時: 2006-04-14 13:53
皆様、回答ありがとうございます&返信が遅くなりました。 質問者です。

/usr/local/lib/php/phplib/page.inc on line 18 ですが、
18行目付近はこんな感じでした。

12|function page_open($feature) {
13| global $_PHPLIB;
14|
15| # enable sess and all dependent features.
16| if (isset($feature["sess"])) {
17| global $sess;
18| $sess = new $feature["sess"];
19| $sess->start();

そこでもとのサーバーのphplib以下のファイルを全部
(どれが該当するファイルか判断できなかったので)、
移転先のサーバーのphplib以下にコピーしてみたのですが状況は変わりませんでした。
phplib以下ではなくて、他の場所にクラスを定義しているファイルが
あるのでしょうか。。。

ということで、サーバーの管理人に相談をしてみることにします。
勉強になりました! ありがとうございました。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2006-04-14 15:01
phplibなんて、もう何年も使って無いから外してるかもしれないけど・・・

なんか、セッションの値からクラスを復元しようとしている気がするから、session.auto.startの値を確かめてみたらどうでしょ?
(つまり、クラスの定義が読み込まれる前にsessionのobjectを復元しようとした為に、クラスの定義がされてない、と警告が出るのでは無いかと。)
1

スキルアップ/キャリアアップ(JOB@IT)