核心是配置apache:启用mod_ssl模块、用mkcert生成含san的可信证书并放入conf/ssl/目录、在httpd-ssl.conf中设置virtualhost监听443端口、指定证书路径并添加setenv https on,确保$_server['https']为'on'。

在本地PHP开发中开启HTTPS,核心是让Web服务器(如phpEnv内置的Apache)正确加载SSL模块、使用浏览器信任的证书,并把加密状态准确传给PHP。PHP本身不处理HTTPS,它只依赖服务器配置来设置$_SERVER['HTTPS']等变量。配置不到位,就会出现“访问https://localhost失败”“$_SERVER['HTTPS']为空”“资源被拦截”等问题。
启用Apache的mod_ssl模块
这是整个HTTPS的基础。phpEnv默认通常未激活SSL支持,跳过这步,后续所有操作都无效。
- 打开
phpEnv\apache\conf\httpd.conf - 找到
LoadModule ssl_module modules/mod_ssl.so,确保前面没有# - 找到
Include conf/extra/httpd-ssl.conf,同样取消注释 - 保存后,在phpEnv控制面板点击“重启Apache”,或运行
httpd -t检查语法是否正常
生成并安装可信的本地证书
别用手动openssl命令生成证书——现代浏览器(Chrome/Edge/Safari)要求证书必须包含subjectAltName(SAN),否则直接报NET::ERR_CERT_INVALID且无法绕过。
- 下载mkcert(推荐v1.4.8+),解压后加入系统PATH
- 以管理员身份运行CMD/PowerShell,执行
mkcert -install(只需一次,把根证书注入系统信任库) - 进入
phpEnv\apache\conf\目录,新建ssl文件夹,再执行:mkcert localhost 127.0.0.1 ::1 - 会生成
localhost+3.pem(证书)和localhost+3-key.pem(私钥),放进conf\ssl\目录
配置SSL虚拟主机并透传HTTPS状态
仅配置证书还不够。PHP要识别当前是HTTPS请求,Apache必须显式告知——否则$_SERVER['HTTPS']永远为空,导致重定向错乱、URL拼接出错、混合内容警告。
- 编辑
phpEnv\apache\conf\extra\httpd-ssl.conf - 替换全部内容为以下区块(注意路径按你实际安装位置调整):
<virtualhost><br> ServerName localhost<br> DocumentRoot "D:/phpEnv/www"<br> SSLEngine on<br> SSLCertificateFile "conf/ssl/localhost+3.pem"<br> SSLCertificateKeyFile "conf/ssl/localhost+3-key.pem"<br> SetEnv HTTPS on<br><directory><br> Options Indexes FollowSymLinks<br> AllowOverride All<br> Require all granted<br></directory><br></virtualhost>
- 确保
DocumentRoot和Directory路径一致,且指向你的项目根目录
验证与常见问题排查
配置完成后,不是立刻就能用,几个关键点决定成败:
- 重启Apache后,访问
https://localhost,首次应看到“您的连接不是私密连接”提示——点击“高级”→“继续前往localhost(不安全)”即可,说明证书已加载(因mkcert已安装根证书,此提示通常不会出现;若出现,说明mkcert -install未成功) - 新建
test.php,写<?php var_dump($_SERVER['HTTPS']); ?>,输出应为string(2) "on";若为空,重点检查SetEnv HTTPS on是否写在<virtualhost></virtualhost>内 - 若页面加载CSS/JS失败,是混合内容问题:把资源链接改为
//localhost/xxx.js或用$_SERVER['REQUEST_SCHEME'] ?? 'https'动态拼接协议 - 若Apache启动失败,查
logs/error_log,90%是证书路径写错、文件权限过高(Windows下私钥需取消继承权限)、或路径用了反斜杠没转义
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











