Symfony 5开发CRUD创建功能时出现Session权限拒绝错误求助
Symfony 5 创建CRUD时出现Session权限拒绝错误
问题详情
基于Symfony + PHP开发CRUD功能,查询(READ)、删除(DELETE)功能正常,但执行创建(CREATE)操作时触发权限错误:
Symfony 5 : Warning: SessionHandler::read(): open(D:\XAMPP\tmp.... failed: Permission denied (13)
创建功能代码
#[Route('/addClassroom', name: 'addClassroom')] public function addClassroom(ManagerRegistry $doctrine, Request $request) { $classroom = new Classroom(); $form = $this->createForm(ClassroomFormType::class, $classroom); $form->handleRequest($request); if($form->isSubmitted()){ $em = $doctrine->getManager(); $em->persist($classroom); $em->flush(); return $this->redirectToRoute('afficheC'); } return $this->renderForm('classroom/addClassroom.html.twig', array('f'=>$form)); }
已尝试的排查操作
- 关闭Windows UAC权限控制,让XAMPP无限制运行
- 注释两个
php.ini文件中的openssl相关配置 - 更换过不同版本的XAMPP和PHP(当前使用8.1.6),问题未解决
已完成的数据库初始化步骤
symfony console doctrine:database:createsymfony console make:entitysymfony console make:migrationsymfony console doctrine:migration:migratesymfony console make:form ClassroomForm
解决建议
1. 修正XAMPP tmp目录权限
直接给D:\XAMPP\tmp目录添加完全控制权限:
- 右键tmp文件夹 → 属性 → 安全选项卡
- 找到当前运行XAMPP的Windows账户,勾选「完全控制」权限并应用
2. 自定义Symfony Session存储路径
在config/packages/framework.yaml中,将Session存储目录改为项目内的安全路径,规避系统权限限制:
framework: session: handler_id: null save_path: '%kernel.project_dir%/var/sessions/%kernel.environment%'
确保var/sessions目录存在,并给本地用户添加读写权限。
3. 以管理员身份启动XAMPP
右键XAMPP控制面板,选择「以管理员身份运行」后再启动Apache、MySQL服务,绕开系统权限限制。
4. 检查PHP Session配置
打开XAMPP的php.ini文件,确认session.save_path指向的目录存在且有读写权限:
session.save_path = "D:/XAMPP/tmp"
若路径包含空格或特殊字符,建议修改为无空格的路径。
内容的提问来源于stack exchange,提问作者Abdo Bodabous
相关产品推荐
相关产品推荐

