XAMPP Apache环境下Symfony项目新增控制器后报ERR_CONNECTION_RESET错误
解决方案
1. 修复PHP OPcache配置(最高概率匹配你的问题)
Windows环境下XAMPP默认的OPcache配置经常和Symfony的注解路由规则冲突,由于PHP进程直接崩溃不会写入Symfony日志,所以只会返回ERR_CONNECTION_RESET错误:
- 打开XAMPP面板点击Apache行的「Config」按钮,选择
php.ini文件 - 搜索到
opcache相关配置段,修改为以下参数:
; 开启OPcache的同时保留PHP注释,Symfony需要读取注释生成路由 opcache.enable=1 opcache.enable_cli=0 opcache.save_comments=1 opcache.load_comments=1 opcache.memory_consumption=256 opcache.max_accelerated_files=10000 opcache.validate_timestamps=1 opcache.revalidate_freq=2
- 保存文件后重启Apache测试
- 如果临时把
opcache.enable=1改为opcache.enable=0后问题消失,即可确认是OPcache配置导致的问题
2. 补全VirtualHost目录权限配置
你当前的vhost配置缺少目录授权段,会导致Apache无法正常读取项目目录下的.htaccess规则,甚至触发进程权限异常:
修改httpd-vhosts.conf中的站点配置为:
<VirtualHost *:80> DocumentRoot "C:/xampp/htdocs/myproject/public" ServerName myproject <Directory "C:/xampp/htdocs/myproject/public"> AllowOverride All Require all granted </Directory> </VirtualHost>
修改完成后重启Apache。
3. 清除Symfony缓存
Symfony的缓存目录权限异常也会导致进程卡死,手动删除项目根目录下var/cache文件夹的所有内容,或者在项目根目录执行命令:
php bin/console cache:clear
4. 排查Apache错误日志
如果以上方案都无效,打开XAMPP面板Apache行的「Logs」按钮,选择Error Log,连接重置错误属于Apache子进程崩溃,错误原因会记录在Apache的日志中而非Symfony的项目日志。
内容的提问来源于stack exchange,提问作者Totallama
相关产品推荐
相关产品推荐

