OSCC
oscc****@telus*****
2003年 7月 30日 (水) 06:08:44 JST
はじめまして、ゆたかです。 ちょい、補足というか、素人なので、間違ってるかもしれませんが、 とりあえず、関連することやってたので参考までに書いときます。 > 以下のファイルで、 > admin/includes/application_top.php > catalog/includes/application_top.php > 次のように一時ファイルを記録するディレクトリをセットしています。 > define('PHP_SESSION_SAVE_PATH', '/tmp'); わたしも、共有サーバを使っているので、/tmpに書き込めなくて、 (実際には書き込めたのかも知れないが、オンラインユーザを 表示する際に、セッションファイルをオープンしようとしてエラー) いろいろとソースを追いかけました。で、上記の場所も/tmpを わたしのシステムで書き込めるディレクトリに変えてみたのですが、 どう頑張っても、無視されて、/tmpに書き込もうとするようです。 それで、もう一度よく、ソースを見てみると。。。 // check to see if php implemented session management functions - if not, include php3/php4 compatible session class if (!function_exists('session_start')) { define('PHP_SESSION_NAME', 'sID'); define('PHP_SESSION_SAVE_PATH', '/tmp'); include(DIR_WS_CLASSES . 'sessions.php'); } とあります。 つまり、ここでの設定が有効なのはsession_startという関数がない場合だけで、 普通はあるから、ここの設定を変えても指定ディレクトリは変わらないのだろう という結論に達しました。それでも、/tmpを変える方法はないかといろいろと 頑張ってみましたが、結局、どこから情報を得ているのかわかりませんでした。 ソースにないということは、環境変数とかからかな?って感じでした。 結論として、わたしの場合もDBに書き込むことにしました。 /tmpに書き込みができないというのは、普通の常識から考えれば、 おかしいと思われるかもしれませんが、共有サーバではよくあることのようです。 他の共有サーバでもユーザ別のディレクトリの下に/tmpを作ってるようでした。 ちょっと、話は外れますが、わたしはopen_basedirでも、ハマりました。 open_basedirはphpから特定のディレクトリのみにアクセスを許可する仕組みです。 これも、共有サーバに関することかも知れませんが、共有サーバでは、セキュリティ の問題から契約個人がphpから書き込めるディレクトリを制限してたりします。 わたしの共有サーバでは標準でOSCをインストールすると、何故かBACKUPなどが phpから書き込めないディレクトリに設定されるようでした。 これは、設定を修正してOKとなりました。 ただ、不思議なのは、標準インストールで設定された書き込めないディレクトリも、 サーバ情報でphpパラメータを見ると、open_basedirで許可されているんですよ ね。。。 余談でした(^^;