【ZenCart覚書】サーバ移転後にsession cacheのエラー
現象
サイト上方と管理画面に、このようなエラーメッセージが。
管理画面はこの表記のみでログイン枠でず。ぎゃー。
Warning: session_start() [function.session-start]: open([移転前のcatalogディレクトリへのパス]cache/sess_[英数字の羅列], O_RDWR) failed: No such file or directory (2) in [移転後のcatalogディレクトリへのパス]includes/functions/strict_sessions.php on line 105
Warning: session_start() [function.session-start]: Cannot send session cookie – headers already sent by (output started at [移転後のcatalogディレクトリへのパス]includes/functions/strict_sessions.php:105) in [移転後のcatalogディレクトリへのパス]includes/functions/strict_sessions.php on line 105
Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at [移転後のcatalogディレクトリへのパス]includes/functions/strict_sessions.php:105) in [移転後のcatalogディレクトリへのパス]includes/functions/strict_sessions.php on line 105
Warning: session_regenerate_id() [function.session-regenerate-id]: Cannot regenerate session id – headers already sent in [移転後のcatalogディレクトリへのパス]includes/functions/strict_sessions.php on line 108
Warning: Cannot modify header information – headers already sent by (output started at [移転後のcatalogディレクトリへのパス]includes/functions/strict_sessions.php:105) in [移転後のcatalogディレクトリへのパス]includes/init_includes/init_templates.php on line 78
解決法:DB(MySQL)の設定表記を書き換えました~
configure.phpは全て書き換えたのに、
移転前のパスが出てくるのはヘンだなぁと思って調べていたら、
DB側で設定されているということがわかりました。
参考:★webメモ: php zencartセッション保存先エラー対応
●確認SQL
% select configuration_value,configuration_key from configuration where configuration_key = “SESSION_WRITE_DIRECTORY” ;●解決方法
以下を実行して、自分のセッションを保存したいディレクトリを指定した。
% update configuration set configuration_value = “ディレクトリ名”
where configuration_key = “SESSION_WRITE_DIRECTORY”;
上の方はコマンドでやってるみたいで、よくわからなかったので、
私はダンプしたDB内に表記されてるところがあるんじゃないかと思って
探したらやっぱりありました。
『configuration』の項目内です。
(259, ‘セッション情報保存ディレクトリ’, ‘SESSION_WRITE_DIRECTORY’, ‘[移転前のcatalogディレクトリへのパス]cache’, ‘セッション管理がファイルベースの場合に保存するディレクトリを設定します。’, 15, 1, NULL, ‘2008-09-25 16:03:20’, NULL, NULL);
ここが移転前のパスになっていたら、移転後のパスに書き換えればOKです。
phpmyadminでも書き換えられます。
上の上方から行くと、『configuration』の259行目ですね。
余談ですが、『sessions』という項目もあるので、
最初こっちを空にしたりとか色々いじくってたのですが、
こちらの項目は関係なかったです。
名前が似てるからってだまされちゃダメだ(ーー;
結局関係なかったがその他に試してみたこと。
結局関係なかったのですが、今後なんかあったときのためにメモ。
★php5の環境でzen cartをインストールすると出るエラー | NIPPON MODE BGS-WORKS
strict_sessions.phpの55行目あたり
function _sess_write($key, $val) {
global $db;
global $SESS_LIFE
を以下のように書き換える。
function _sess_write($key, $val) {
// The following is only to work around a PHP 5.2.0 bug:
global $db; if (!is_object($db)) {
//PHP 5.2.0 bug workaround …
$db = new queryFactory();
$db->connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD, DB_DATABASE, USE_PCONNECT, false);
}
global $SESS_LIFE;
STORE_SESSIONSの書換え
★インストール後、「警告: セッション・ディレクトリが存在しません: /tmp. セッションを利用するためにディレクトリを作成してください。」という警告が表示される。
これはosCommerceの現象みたいなのですが、
configure.phpに似たような表記があったので、関係あるのかなぁと思って、
両方のconfigure.phpの中の
define('STORE_SESSIONS', ''); // leave empty '' for default handler or set to 'db'
を
define('STORE_SESSIONS', 'mysql'); // leave empty '' for default handler or set to 'mysql'
と書き換えてもみたのですが、特に変りなかったので、元に戻しました。
よくよく考えると、元々mysqlの設定を読み込んでるのだから、これは関係ないね。
ディスカッション
コメント一覧
まだ、コメントがありません