2011-12-04 11 views
5

VPSでPHP Fastcgiを使用しているnginxサーバーでWebサイトを実行しています。私はphp.ini(/ etc/php5/cgi)を3日以上(259200秒)以上のPHPセッションに設定しようとしましたが、うまく動作せず、PHPセッションは1時間以上持続しません。 php.iniでPHPセッションの有効期限が近すぎる

私の現在のセッションの設定:

session.use_cookies = 1 
session.use_only_cookies = 1 
session.name = PHPSESSID 
session.auto_start = 0 
session.cookie_lifetime = 259200 
session.cookie_path =/
session.cookie_domain = 
session.cookie_httponly = 
session.serialize_handler = php 
session.gc_probability = 1 
session.gc_divisor = 1000 
session.gc_maxlifetime = 259200 
session.bug_compat_42 = Off 
session.bug_compat_warn = Off 
session.referer_check = 
session.entropy_length = 0 
session.cache_limiter = nocache 
session.cache_expire = 259200 
session.use_trans_sid = 0 
session.hash_function = 0 

ここに問題がある可能性がありますか?

+1

php.iniファイルがPHPに読み込まれていますか? 'phpinfo()'の "Loaded Configuration File"パスをダブルチェックして確認しましたか? – animuson

+0

PHPのini値の該当するすべての設定のPHPファイルで 'var_dump(ini_get( 'session.cookie_lifetime'));を使って、他の場所で上書きされないようにしてください。 – Treffynnon

+0

@animuson:はい、ロードされています。設定ファイル(php.ini)のパス\t/etc/php5/cgi ロードされた設定ファイル\t /etc/php5/cgi/php.ini 追加の.iniファイルについては、このディレクトリをスキャンしてください。\t /etc/php5/cgi/conf.d 追加の.iniファイルが解析されました\t /etc/php5/cgi/conf.d/curl.ini、/etc/php5/cgi/conf.d/gd.ini、/etc/php5/cgi/conf.d/mysql。 ini、/etc/php5/cgi/conf.d/mysqli.ini、/etc/php5/cgi/conf.d/pdo.ini、/etc/php5/cgi/conf.d/pdo_mysql.ini – NeDark

答えて

10

これはサーバー上でUbuntuやDebianのように聞こえる。私が正しく覚えていれば、あなたのセッションディレクトリをより頻繁に整理するどこかで(php5またはphp5-commonパッケージのいずれかでインストールされた)cronjobがあります。

セッションをデフォルト以外の場所に保存するように設定することをお勧めします。 session.save_pathを調整し、cronjobにそれが空でないことを確認してください。

クローンジョブは、/etc/cron.d/phpのようなものです。具体的には、dpkg -L php5またはdpkg -L php5-commonを実行してください。あなたがUbuntu(またはDebian)にいると仮定すると、これはインストールされているすべてのファイルの場所を表示するはずです。あなたがデバッグに役立つ

+0

最後に私は[memcachedでセッションを保存する](http://www.dotdeb.org/2008/08/25/storing-your-php-sessions-using-memcached/)で問題を解決しました。しかし、あなたの解決策は有効であるように見えますので、私はあなたの答えを知るでしょう。ありがとう。 – NeDark

4

、あなたはPHPのcronジョブを実行することにより、 "見" されていることを、現在の設定をチェックすることができます

は/ usr/libに/ PHP5/MAXLIFETIME

MAXLIFETIMEスクリプトはすべてあなたのphpを検索しますsession.gc_maxlifetimeの.iniファイルで、最大値を使用します。 印刷される値は分単位です。

+0

私はこれがubuntu 15.10のスクリプトだと思います:/ usr/lib/php5/sessionclean – talsibony

関連する問題