PHP セッション失敗エラーの解決策
元のアドレス: http://www.hjaa.net/?p=1149
php がセッションの開始に失敗した場合のエラーの理由は次のとおりです: php.ini で、セッションに関連する設定にエラーがあり、session?cookie を送信および保持できません。
トラブルシューティングの手順:
1. 次のテキストを phpinfo.php として保存し、このサイト http://www.hjaa.net/phpinfo.php などのアクセス可能なサーバーにアップロードします。
phpinfo();?>
セッション部分に注目してください
2. session.cookie_domain はドメイン名 A を設定します。つまり、session.cookie_domain?=?A ドメイン名では、session?cookie がドメイン名 B で無効になります。
解決策 1: php.ini の session.cookie_domain を空に設定します。つまり、session.cookie_domain?=
解決策 2: session.cookie_domain?=使用するドメイン名に設定します
3. php.ini の session.cookie_path 設定が厳しすぎます。たとえば、session.cookie_path?=?/hjaa/ に設定します。つまり、ルート ドメイン名の下にある hjaa ディレクトリとサブディレクトリのみがセッションの使用を許可されます (より正確には、session.cookie_domain が A に設定されている場合)。ドメイン名。これは、A ドメイン名が A ドメイン名の下に設定されていることを意味します。セッションは hjaa ディレクトリとサブディレクトリでのみ使用できます。
解決策: php.ini の session.cookie_path を「/」 (二重引用符なし) に設定するか、?session.cookie_path?=?/
など、より緩和されたセキュリティ設定に設定します。
4. php.ini では、session.cookie_path がセッション一時ファイルが保存されるパスを表すと考えられ、session.cookie_path と session.save_path が混同されています。しかし実際には、session.cookie_path はセッションが有効な Web サイトのドメインを表し、サーバーのファイル権限とは関係ありません。session.save_path はセッションの一時ファイルが保存されるパスです。たとえば、session.cookie_path を session.cookie_path?=?C:/WINDOWS/TEMP に設定すると、障害が発生します。5. session.save_path で設定されたディレクトリに書き込み権限がないか、設定が正しくありません (たとえば、設定されたフォルダーが存在しません)。注: 空の場合、デフォルトのシステム一時フォルダー パスが使用されます。 Windowsは通常「%SystemRoot%TEMP」、UNIXは通常「/tmp」です
解決策:
(1) session.save_path が空白でない場合は、設定値がフォルダーに対応しており、そのフォルダーが存在することを確認してください。設定方法が本当にわからない場合は、この設定をコメントするか、null 値に変更して PHP がデフォルト設定を使用できるようにしてください。
(2) 対応するディレクトリで、対応するユーザーに書き込み権限を与えます。たとえば、IIS の場合、インターネット ゲスト アカウントに書き込み権限を与える必要があります。
6. session.auto_start = on の場合、 session_start() を実行すると、新しい session_id が生成されます。 session.auto_start = on の利点は、 session_start() または session_start() の場所を忘れずに実行できることです。いいえ、欠点は、サードパーティのコードを使用している場合、そのコード内のすべての session_start() を削除する必要があることです。そうしないと、正しい結果が得られません
解決策:
(1) session.auto_start = オフ
(2) プログラム内の session_start() を削除します