投稿者 |
メッセージ |
|
< PHPプログラミング ~ phpを新しくしたら動かなくなりました。 |
|
時間:
日 2月 27, 2005 6:55 pm
|
|
|
|
初めまして。phpを新しくしたら動かなくなりました。皆さんのお力をお借りしたく、
投稿致します。何か分かりましたら宜しくお願い致します。
以前、赤本を見て作ったコードなのですが、バージョンを上げたところelse以降の
判定をしなくなりました。
恐らく、if (!isset($_SESSION["sel"]) || !isset($_REQUEST["mode"]))
の判定が上手く行ってないとは思うのですが・・・
コードは以下の通りです。
if (!isset($_SESSION["sel"]) || !isset($_REQUEST["mode"])) { // はじめての表示?
$_SESSION['sel'] = new myPgSelect; // myPgSelectオブジェクト作成
$_SESSION["meta"] = new myPgMetaData;// myPgmetaDataオブジェクト作成
$mode = "top"; // 初期表示モード設定
} else {
$mode = (isset($_REQUEST["mode"])?$_REQUEST["mode"]:"top");
}
ちなみに、バージョンは、以前、4.2.2で正常に動いていました。現在、
4.3.9にバージョンアップしてからおかしくなってます。
宜しくお願い致します。 |
|
|
|
|
|
|
|
時間:
日 2月 27, 2005 8:59 pm
|
|
|
登録日: 2004年11月 12日
投稿記事: 71
|
|
エラーメッセージが出ていますか?
あと
print_r や var_dump などで $_SESSION, $_REQUEST を出力してみてください。 |
|
|
|
|
|
|
|
時間:
月 2月 28, 2005 9:49 pm
|
|
|
|
早速、print_r試してみました。
最初、オブジェクトが生成されたときは、$SESSION変数の中に、以下のデータが
入っていました。
Array ( [sel] => mypgselect Object ( [mode_var] => mode [next] => next [prev] => prev [db] => dbconnect Object ( [dbname] => hoken [host] => [port] => [user] => [password] => [con] => Resource id #7 ) [update] => update [delete] => delete [inde] => 1 [indece] => [rowsc] => [maxl] => 10 [usersql] => [sqlc] => [offset] => 0 ) [meta] => mypgmetadata Object ( [mode_var] => mode [exec_select_command] => show [insert_command] => insert [update_command] => update [delete_command] => delete [exec_insert_command] => insertExec [exec_update_command] => updateExec [exec_delete_command] => deleteExec [table_name] => hoken [sort_column] => day [aliases] => Array ( [day] => 日付 [init] => イニシャル [username] => 名前 [car] => 車名 [tnumb] => ナンバ [tantou] => 担当 [shop] => 拠点 [idou] => 異動 [toukyu] => 等級 [kouza] => 口座 [hokenco] => 損保会社 [bikou] => 備考 [syouken] => 証券 ) [db] => dbconnect Object ( [dbname] => hoken [host] => [port] => [user] => [password] => [con] => Resource id #7 ) [is_print_type_name] => [is_print_opr_desc] => [md] => Array ( [0] => Array ( [name] => day [typename] => date [len] => 4 [modifier] => -1 [notnull] => f ) [1] => Array ( [name] => init [typename] => text [len] => -1 [modifier] => -1 [notnull] => f ) [2] => Array ( [name] => username [typename] => text [len] => -1 [modifier] => -1 [notnull] => f ) [3] => Array ( [name] => car [typename] => text [len] => -1 [modifier] => -1 [notnull] => f ) [4] => Array ( [name] => tnumb [typename] => text [len] => -1 [modifier] => -1 [notnull] => f ) [5] => Array ( [name] => tantou [typename] => text [len] => -1 [modifier] => -1 [notnull] => f ) [6] => Array ( [name] => shop [typename] => text [len] => -1 [modifier] => -1 [notnull] => f ) [7] => Array ( [name] => idou [typename] => text [len] => -1 [modifier] => -1 [notnull] => f ) [8] => Array ( [name] => toukyu [typename] => text [len] => -1 [modifier] => -1 [notnull] => f ) [9] => Array ( [name] => kouza [typename] => text [len] => -1 [modifier] => -1 [notnull] => f ) [10] => Array ( [name] => hokenco [typename] => text [len] => -1 [modifier] => -1 [notnull] => f ) [11] => Array ( [name] => bikou [typename] => text [len] => -1 [modifier] => -1 [notnull] => f ) ) [table_oid] => 28837 [table_constraints] => [tid] => [hash] => ) )
しかし、再度、
<a href="{$_SERVER["PHP_SELF"]}?mode=search">
のコードで自分自身を呼び出し、$SESSION変数をprint_rしてみると、
Array ( )
となり、変数の中身が空っぽに成っていました。
また、気になる点として、/tmp/phpにセッションIDが保存されると思うのですが、
/tmp/phpの中は空っぽでした。
何か分かりましたら、宜しくお願い致します。 |
|
|
|
|
|
|
|
時間:
火 3月 01, 2005 7:58 pm
|
|
|
|
原因が判明しました。php.iniの設定で、
session.save_path = /tmp/php
があるのですが、この指定ディレクトリー(/tmp/php)のパミッションが、
rwx... ...であったため、セッションを書き込めませんでした。
お騒がせ致しました。また、 kコさん、ヒントを頂き大変ありがとうございました。 |
|
|
|
|
|
|
|