2016-06-29 13 views
1

すべてのページに含まれる単一の設定ファイルでユーザーセッションを制御しています。私は自分のウェブサイトにログイン/ログアウトオプションを持っています。PHPセッションは正確に120秒で自動的に期限が切れる

ユーザーのセッション破棄のタイムアウトを1年に延長したいとします(ユーザーがブラウザを閉じても、ユーザーログがページ外に出ていない限りセッションはそこに残っているはずです)。私は、ユーザーセッションのタイムアウト値を拡張するために、これを使用しています

<?php 

session_set_cookie_params(31556952); 

ini_set('session.gc_maxlifetime',31556952); 

session_start(); 

//my Other code like DB connections will come below. 

?> 

とで

php.iniの私は 31556952

session.gc_maxlifetimeを設定している

しかし、これには影響しません何か、ユーザーセッションは正確に120秒で破壊されます。

私はすべてのstackoverflow関連の問題を参照しましたが、私は手がかりを得ていませんでした。

どのような問題がありますか?助言がありますか。

+0

http://stackoverflow.com/questions/6360093/how-to-set-lifetime-of-session/6360403#6360403それは役に立ちます – Dave

+0

@DhavalDaveそれはうまくいっていませんでした。 –

答えて

-2

私は、設定したクッキーと同じ時間でセッション時間を設定する必要があります。

+0

文法やコードを簡単に記述できますか? –

0

私はいくつかのことを考えることができますが、それは多くのものによって引き起こされる可能性があります。 iniファイルを検証して、すべてが正常であることを確認してください。私はこれまでにこのような問題を抱えていましたが、私は2つのバージョンのPHPをサーバーにインストールしていました。私は間違ったiniファイルを修正していました。使用しているPHPのバージョンが、使用しているiniに属するものであることを確認してください。

時にはPHPファイルのiniセットを実行することができません。理由は分かりません。これが起こると、htaccessファイルにレコードを追加して、Apacheがそれらを選択していることを確認します。 session timeout in php code and in htaccess?

最終的なものは少し難解です。セッションをどこかで破壊していないことを100%確認してみてください。 120秒後にはサーバーと同じように見えるが、120秒後に何かのスクリプトを呼び出していないことを確認してください。何らかの理由でこのスクリプトがセッションを終了しています。

+0

私は理解していますが、120秒ごとにセッションを破棄するためのスクリプトを呼び出さなかったのです。 –

+0

は意図的にではありませんが、バグかもしれません。 120はデフォルトのセッション時間では非常に短いようです。別のPHPスクリプトを作成して、このスクリプトでセッションが存続する期間を確認してみましたか?それが120秒後にも消えたら、サーバはアプリケーションではなく責任を負うことになります –

+0

Hmmm、ini_get( 'session.gc_maxlifetime')これは正確な値を返します31556952私はphp.inサーバに設定しました –

0

別のスクリプトがどこかsession.gc_maxlifetimeに異なる値を持っており、両方のスクリプトが、より低い値が優先されます、セッションデータのためのスペースを節約同じことを共有している場合

  1. あなたをめちゃくちゃにされる可能性があります物事のカップルがあります。 。これがあなたの状況である場合は、カスタムの場所にセッションを保存して、より寿命の短いスクリプトがこのスクリプトと競合しなくなるようにしてください。 ini_set('session.savepath',NEWPATH)を呼び出すことでそれを行うことができます。詳細はsee the docsです。
  2. 実行時にsession.gc_maxlifetimeを設定した特定のDebianシステムでは効果がありません。あなたの最善の策は、ファイルをphp.iniに変更することです。これはreported hereです。

あなたのセッションで何ヶ月もセッションを続けたいと思えば、私はおそらくログインクッキーを保存するデータベースに頼っているでしょう。

+0

ありがとう、NEWPATHは何でもいいですか?既存のユーザーセッションに影響しますか? –

+0

PHPが読み書き権限を持つディレクトリへのパスである必要があります。実行時に 'ini_set'で設定すると、そのセッションだけに影響すると思います。常に実行される設定ファイルで実行している場合、その設定ファイルを使用するすべてのセッションに影響します。 docs:http://php.net/manual/en/function.session-save-path.php – BeetleJuice

+0

私はセッションストアのパスを変更して戻ってきます。 –

関連する問題