2

私はこれに対する何十もの解決策を読み、それらのほとんどすべてを試しましたが、とにかく私のセッションはすぐにタイムアウトします. 私は Debian インストールを使用しており、/usr/lib/php5/maxlifetime の max 変数を 86400 に設定しています。また、php.ini で session.gc_maxlifetime = 86400 を設定しています。セッション Cookie を 1 時間有効にし、ページをリロードするたびに別の時間で更新します。ini_set("session.gc_maxlifetime", "86400"); を設定してみました。私のフロントコントローラーで。しかし、何も役に立ちません。サイトにログインして約 20 分待ってから次にページのリンクをクリックすると、ログアウトされます。セッション Cookie は引き続き有効で、/var/lib/php5 内のセッション ファイルは引き続き存在します。私はそれを理解していません。また、システムで Parallels PLESK を使用しており、標準の Debian インストールに多くの変更が加えられていることも言及しておく必要がありますが、それが問題だとは思いません。誰?

4

4 に答える 4

1

複数の .ini がロードされている可能性があり、セッションを変更したものがチェーンの後でロードされたものによって上書きされている可能性があります。phpinfo()セッションの検証/ログイン コードの場所をダンプして、セッションの設定を確認します。出力の一部には、ロードされた .ini ファイルのリストも含まれます。

于 2010-08-30T17:57:34.420 に答える
0

php -i |を実行しますか? grep session.cookie_lifetime (コンソールで) またはphpinfo() (スクリプトで) は、Cookie の有効期間パラメーターへの変更を確認しますか?

Firefox を使用している場合は、Web 開発者ツールバーと Firebug をインストールして、Cookie とネットワーク アクティビティを調べてみてください。これは、セッション Cookie のハッシュ値が変化する問題を調査する際に非常に便利な組み合わせです。

また、コードまたはライブラリのどこかにsession_set_cookie_params()の呼び出しがあり、予想される動作をオーバーロードしている可能性もあります。上記の拡張機能のいずれかを使用して Cookie を検査し、有効期限を確認できます。

于 2010-09-20T02:37:18.630 に答える
0

これが役立つかどうかはわかりませんが、ob_start() と session_start(); の両方を使用していることを確認してください。

ob_start();
session_start();

それは奇妙です。解決策は、Cookie を使用して「Remember Me」機能を実装することです。別のコンプ、または同じコンプで別のブラウザーにログインすると、セッションが非常に気まぐれになる可能性があることはわかっています。Cookie が破棄される可能性があります。

また、セッションは本当に破壊されていますか? または、新しいセッションが生成されていますか?

于 2010-09-11T01:21:27.837 に答える
0

.htaccess が他のすべてのものと競合している可能性はありますか? コードやカスタム php.ini のどこかにこれを設定していませんか? このような問題が発生するたびに、1 つの場所を忘れていることにようやく気付きます。

于 2010-08-29T19:05:05.260 に答える