Windows下PHP环境开机自启有五种方法:一、注册Apache/Nginx为Windows服务;二、用任务计划程序触发启动;三、通过启动文件夹部署BAT脚本;四、修改注册表Run键值;五、使用NSSM封装为服务。

如果您已在Windows本地部署PHP环境,并搭配Apache或Nginx作为Web服务器,但每次重启系统后需手动启动服务,说明服务尚未配置为开机自启。以下是针对不同组合的多种可靠实现方法:
一、通过Windows服务方式注册Apache/Nginx为系统服务
将Apache或Nginx以Windows服务形式安装后,可设置为“自动”启动类型,系统开机时由Service Control Manager直接拉起,无需用户登录即可运行。
1、以管理员身份打开命令提示符(cmd)或PowerShell。
2、若使用Apache:进入Apache安装目录的bin子目录,执行:httpd.exe -k install -n "Apache2.4"(请将"Apache2.4"替换为实际服务名,路径需含空格时加英文双引号)。
立即学习“PHP免费学习笔记(深入)”;
3、若使用Nginx:下载并解压nginx-service工具或使用官方推荐方式,进入Nginx目录后执行:nginx-service.exe install;或使用sc命令手动创建服务:sc create Nginx binPath= "C:\nginx\nginx.exe" start= auto(注意等号后有空格)。
4、在“服务”管理界面(services.msc)中找到对应服务,右键属性,将“启动类型”设为自动(延迟启动)或自动。
5、点击“启动”按钮立即启用服务,并确认状态为“正在运行”。
二、通过任务计划程序触发服务启动
适用于无法以服务方式注册(如便携版Nginx)、或需在用户登录后才启动PHP脚本/CLI服务的场景;支持指定延迟、条件判断与错误重试机制。
1、在开始菜单搜索并打开“任务计划程序”。
2、右侧点击“创建任务”,在“常规”选项卡中输入名称(如“启动Nginx+PHP-FPM”),勾选“不管用户是否登录都要运行”和“不存储密码”(若选此项则需使用“仅当用户登录时运行”)。
3、切换至“触发器”选项卡,点击“新建”,选择“登录时”或“系统启动时”,建议勾选“延迟任务时间”设为30秒以避开系统资源争抢。
4、进入“操作”选项卡,点击“新建”,在“程序或脚本”栏填写Nginx主程序绝对路径(如C:\nginx\nginx.exe),在“添加参数”栏留空或填-c C:\nginx\conf\nginx.conf;如需同时启动PHP-FPM,再添加一个操作,程序路径为C:\php\php-fpm.exe,参数为-c C:\php\php-fpm.ini。
5、在“条件”选项卡中,取消勾选“只有在计算机使用交流电源时才启动此任务”(避免笔记本电池模式失效);“设置”选项卡中勾选“如果任务失败,每隔10分钟重新运行,最多重复3次”。
三、通过启动文件夹部署批处理脚本
利用Windows用户级启动文件夹(shell:startup)执行.bat脚本,适合轻量集成方案(如PHPStudy、XAMPP便携版),依赖用户会话,不适用于无交互登录场景。
1、按下Win + R,输入shell:startup并回车,打开当前用户的启动文件夹(路径通常为C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)。
2、在该目录下新建文本文档,重命名为start_webserver.bat(确保扩展名为.bat)。
3、右键编辑该BAT文件,写入以下内容(按实际路径修改):
@echo off
start /d "C:\nginx\" nginx.exe
start /d "C:\php\" php-fpm.exe -c php-fpm.ini
exit
4、保存文件,关闭编辑器;确认文件属性中“只读”未被勾选。
5、重启系统并登录用户账户,观察任务管理器中nginx.exe与php-fpm.exe进程是否出现。
四、通过注册表Run键值添加自启项
直接向HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run写入启动命令,效果等同于启动文件夹,但更隐蔽且不受文件系统权限限制,适合静默部署。
1、按下Win + R,输入regedit,回车打开注册表编辑器。
2、导航至路径:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run。
3、在右侧空白处右键 → “新建” → “字符串值”,命名为WebServerLauncher。
4、双击该新键值,在“数值数据”栏中填入完整CMD调用命令(必须用CMD /C包裹,否则窗口闪退):
CMD /C START "" "C:\nginx\nginx.exe" & START "" "C:\php\php-fpm.exe" -c "C:\php\php-fpm.ini"
5、关闭注册表编辑器,重启系统验证进程是否存在。
五、使用第三方服务封装工具(如NSSM)
NSSM(Non-Sucking Service Manager)可将任意控制台程序(如nginx.exe、php-fpm.exe)包装为标准Windows服务,支持日志重定向、崩溃自动重启、环境变量注入等高级特性,适合生产级稳定运行。
1、从nssm.cc下载最新版nssm.exe(如nssm-2.24.zip),解压后将nssm.exe复制到C:\nssm\目录。
2、以管理员身份运行CMD,执行:C:\nssm\nssm.exe install NginxService,弹出GUI界面后,在“Application”页签设置:
• Path:C:\nginx\nginx.exe
• Startup directory:C:\nginx\
• Arguments:-c conf\nginx.conf
3、切换至“Details”页签,填写服务描述,勾选“Service can interact with desktop”(调试阶段可选)。
4、切换至“Log on”页签,选择“此账户”,输入当前用户凭据(若需网络访问权限)。
5、点击“Install service”,完成后在services.msc中启动该服务并设为自动。











