windows下搭建symfony的nginx+php环境核心是配置稳定底层运行环境:需用php 8.1+ nts版,启用mbstring、curl、openssl等扩展,cgi.force_redirect=0,nginx root指向public目录并配置try_files $uri $uri/ /index.php?$query_string,通过php-cgi.exe -b 127.0.0.1:9000配合runhiddenconsole后台运行。

在 Windows 上为 Symfony 搭建 Nginx + PHP 环境,核心不是装 Symfony 本身(它只是 Composer 包),而是构建一个稳定、可调试、符合官方推荐要求的底层 Web 运行环境。Symfony 官方明确要求 PHP ≥ 8.1(推荐 8.2+)、启用 opcache、ctype、iconv、json、mbstring、openssl、pcre、session、tokenizer、xml、curl、zlib 等扩展,并建议使用 FPM 模式——但 Windows 不原生支持 PHP-FPM,所以必须用 php-cgi.exe + RunHiddenConsole 模拟等效行为。
PHP 配置要点:NTS 版本 + CGI 关键开关
必须下载 Non-Thread Safe(NTS)、VC17 编译、x64 架构的 ZIP 包(如 php-8.3.10-nts-Win32-vs17-x64.zip),解压到无空格无中文路径(例如 D:\server\php)。进入目录后:
- 复制
php.ini-development为php.ini,用记事本或 VS Code 打开 - 设置扩展路径:
extension_dir = "ext"(默认即正确,无需改绝对路径) - 启用必需扩展(取消分号):
extension=mbstring、extension=openssl、extension=curl、extension=xml、extension=zlib、extension=pdo_sqlite(Symfony Doctrine 默认用 SQLite 测试) - 关键 CGI 项:
cgi.force_redirect = 0(必须设为 0,否则 Nginx 转发失败报 502);cgi.redirect_status_env = ""(清空值,不能留空格);cgi.fix_pathinfo = 1(保证 PATH_INFO 正确,影响 Symfony 路由) - 时区与 OPcache:
date.timezone = Asia/Shanghai;opcache.enable=1且opcache.enable_cli=1(CLI 模式也启用,加速 bin/console)
Nginx 配置重点:root、SCRIPT_FILENAME 与 Symfony 路由规则
解压 Nginx 到同级目录(如 D:\server\nginx),编辑 conf/nginx.conf 中的 server 块:
通过 SSH 隧道从 Android 设备在互联网上对 Windows PC 实现完整远程控制的设置与使用指南,适用于远程桌面访问、安全 RDP 等。
-
root指向 Symfony 项目的public/目录(不是项目根目录),例如:root D:/myproject/public; -
index必须包含index.php:index index.php index.html index.htm; - PHP 处理块中,
fastcgi_pass固定为127.0.0.1:9000(与 php-cgi 启动端口一致) -
SCRIPT_FILENAME必须用$document_root$fastcgi_script_name(绝不能写死 /scripts 或其他路径),这是 Windows 下最常见的 404 或 No input file specified 根源 - 添加 Symfony 伪静态规则(放在
location /内):try_files $uri $uri/ /index.php?$query_string;
启动与验证:RunHiddenConsole 后台运行 php-cgi
直接双击 php-cgi.exe -b 127.0.0.1:9000 会闪退,必须借助 RunHiddenConsole.exe(下载后放至 D:\server\):
- 新建
start_php_cgi.bat,内容为:@echo off<br>set php_home=D:\server\php<br>RunHiddenConsole %php_home%\php-cgi.exe -b 127.0.0.1:9000 -c %php_home%\php.ini
- 双击运行该批处理,无窗口弹出即表示后台成功监听 9000 端口
- 启动 Nginx:
D:\server\nginx\nginx.exe(首次可用命令行运行,方便看错误日志) - 创建测试文件
D:\myproject\public\info.php,内容为<?php phpinfo(); ?>,访问http://localhost/info.php确认 PHP 正常;再访问http://localhost应显示 Symfony 默认欢迎页
Symfony 项目初始化与权限注意
环境就绪后,用 Composer 创建项目:
- 确保已安装 Composer(推荐使用 Windows Installer)
- 命令行进入项目父目录,执行:
composer create-project symfony/skeleton myproject - 进入项目目录,运行:
php bin/console server:run可本地快速验证(但此为内置服务器,非 Nginx) - 重要提醒:Windows 下 Symfony 的缓存和日志目录(
var/cache、var/log)需确保 Web 用户(即 Nginx worker 进程)有写权限——实际无需手动赋权,只要项目目录在本地磁盘且非只读即可;若遇缓存写入失败,检查杀毒软件是否拦截了php-cgi.exe对var/的写操作
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










