PHPがセーフモードの時のセッションについて
PHPがセーフモードであるレンタルサーバーに、自作したPHPスクリプトをアップロード後実行してみました。
そのスクリプトはセッションでログイン管理をしているのですが
Warning: session_start() [function.session-start]: SAFE MODE Restriction in effect.The script whose uid is 1046 is not allowed to access /var/tmp/ owned by uid 0...
Fatal error: session_start() [<a href='function.session-start'>function.session-start</a>]: Failed to initialize storage module: files (path: )...
というエラーが出てしまいます。
マニュアルのセーフモードで制限される関数の説明に
“デフォルトの files session.save_handler を使う場合は、スクリプトのオーナーが session.save_path ディレクトリのオーナーと同じでなければなりません。”
という説明があったので、session.save_pathをスクリプト内のディレクトリ(FTPから新しく作成)に変更してみたところ上記エラーは消え、
CookieにPHPSESSIDが保存されていました。が、ログインが出来ません。
試しにセッションでログイン管理をしている自作ではないスクリプトを設置してみたのですが、これもログインが出来ませんでした。
細かいところは違うんですが、どちらもセッションに保存されたパスワードをチェックしてログイン状態を判別しています。
なので、セッションに値が保存されない(書き込みできない?)という状態なのだと思うんですが、よくわかりません。
session.save_pathを変更するだけではダメなんでしょうか?
原因・解決策のほかに、セーフモードにひっかからない組み方というか、セーフモード対策のようなものがあれば教えて頂きたいです。よろしくお願いします。
※そのサーバーはphp5スクリプトはcgiモードとして扱われます。
※.htaccessは次のようになっています(コントロールパネルで作成されたもの)
Options +ExecCGI
AddHandler cgi-script .cgi .pl
AddHandler x-httpd-php5 .php
SuPHP_ConfigPath /usr/home/hogehoge/scriptname
お礼
ご回答、ありがとうございます。 確認してみたのですが、phpinfoの中にsessionに関する記述が見つかりませんでした。 その設定はどこで指定しているか分かりますか? 度々すいませんが、宜しくお願いします。