私は FriendsOfSymfony UserBundle を初めて使用し、ユーザーをログアウトさせようとするまで、すべてがうまくいっています。ログインは完全に機能し、多くのサイトで見た基本構成を使用しています。ログインが必要なユーザーは 2 人だけです。この問題は、ユーザーがログアウト URL をクリックしたときに発生します。この場合、/logout. ブラウザで一般的なサーバー エラーが発生し、error_log に「スクリプト ヘッダーの途中終了: app_dev.php」と表示されます。エラー ページで更新を押すと、ホームページに戻り、正常にログアウトされます。
security.yml のファイアウォール セクションは次のとおりです。
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
check_path: fos_user_security_check
csrf_provider: form.csrf_provider
logout: true
anonymous: true
security.yml の access_control セクションは次のとおりです。
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel:https }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/logout, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin/, role: ROLE_ADMIN }
config.yml の fos_user セクションは次のとおりです。
fos_user:
db_driver: orm
firewall_name: main
user_class: Wielding\BassBundle\Entity\User
小枝フォームで次のようにログアウトURLを生成しています:
<a href="{{ path('fos_user_security_logout') }}">logout</a>
サイトにログインしておらず、手動でログアウト URL にアクセスすると、エラーなしでデフォルトのインデックス ページにリダイレクトされます。ログインして手動でログアウト URL を入力すると、サーバー エラーが発生します。私は非常に多くの構成変更のバリエーションを試しましたが、ここにリストすることさえできません。それらはすべて失敗しました。
コントローラーでセッションを無効にして自分のログアウトを書き込もうとしたところ、同じエラーが発生しました。
これまでのところ、私の唯一の手がかりは dev.log のエントリです。
[2013-07-27 14:51:26] request.CRITICAL: Uncaught PHP Exception Symfony\Component\Debug\Exception\ContextErrorException: "Warning: SessionHandler::write(): Parent session handler is not open in /home/dev2/app/cache/dev/classes.php line 407" at /home/dev2/app/cache/dev/classes.php line 407 {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\ContextErrorException: Warning: SessionHandler::write(): Parent session handler is not open in /home/dev2/app/cache/dev/classes.php line 407 at /home/dev2/app/cache/dev/classes.php:407)"} []
これを検索すると、最初はこれは心配する必要がないことが示されましたが、他のアイデアはありません. これは、セキュリティを機能させるための私の最後のタスクであり、私をびっくりさせます。
この本当に厄介な問題を解決するために必要なその他の情報を喜んで提供します. ご協力いただきありがとうございます。