phpEnv是一款集成了PHP、MySQL、Nginx、Apache等常用组件的集成开发环境,很多PHP开发者会优先选择它搭建本地开发环境。当需要同时使用Node.js开发接口或者前端项目时,只要做好配置规划,就能让两者在同一个环境下稳定共存,互不干扰。

一、前期准备
首先确保已经正确安装phpEnv,并且可以正常运行PHP项目。如果还没有安装phpEnv,先完成基础安装并测试PHP环境是否正常,比如新建一个<?php phpinfo();?>文件访问确认PHP信息能正常输出。
二、安装适配的Node.js版本
phpEnv本身不集成Node.js,需要手动安装Node.js,安装时注意版本兼容性,建议选择LTS长期支持版本,避免后续出现依赖兼容问题。
安装步骤
- 前往Node.js官方网站下载对应系统的LTS安装包,Windows系统选择msi安装包即可
- 安装过程中保持默认路径或者选择自定义路径,注意勾选添加到系统环境变量的选项,方便后续命令行调用
- 安装完成后打开命令行工具,输入以下命令验证安装是否成功:
node -v npm -v
如果输出对应的版本号,说明Node.js已经成功安装并添加到环境变量中。
三、规划端口避免冲突
phpEnv默认会占用80、443等常用端口,Node.js项目如果默认使用这些端口就会出现端口占用错误,因此需要提前做好端口规划。
端口分配建议
| 服务类型 | 建议端口 | 说明 |
|---|---|---|
| PHP项目(Nginx/Apache) | 80、443 | 保持phpEnv默认配置,不影响原有PHP项目访问 |
| Node.js接口服务 | 3000、7000等高位端口 | 避开phpEnv占用的端口,减少冲突概率 |
| Node.js前端开发服务 | 8080、8081等端口 | 如果是Vite、Webpack等前端工具启动的服务,使用独立端口 |
四、配置phpEnv与Node.js共存
1. 调整phpEnv服务配置
如果不需要phpEnv占用80端口,可以打开phpEnv的管理面板,修改Nginx或者Apache的监听端口,比如将Nginx的监听端口改为8088,这样后续Node.js项目就可以使用80端口,不过这种方式会影响原有PHP项目的访问地址,因此更推荐让PHP保持默认端口,Node.js使用高位端口。
2. 测试Node.js项目运行
新建一个简单的Node.js测试项目,验证是否可以正常启动:
// 引入http模块
const http = require('http');
// 创建服务器
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'});
res.end('Node.js服务运行正常');
});
// 监听3000端口
server.listen(3000, () => {
console.log('Node.js服务已启动,访问地址:http://127.0.0.1:3000');
});
在命令行进入该文件所在目录,执行node index.js,然后访问http://127.0.0.1:3000,如果看到对应输出,说明Node.js服务已经正常启动。
3. 解决跨域问题(可选)
如果PHP项目和Node.js项目需要互相调用接口,会出现跨域问题,可以在Node.js服务中添加跨域配置,示例代码如下:
const http = require('http');
const server = http.createServer((req, res) => {
// 设置跨域头
res.setHeader('Access-Control-Allow-Origin', 'http://127.0.0.1');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
// 处理OPTIONS预检请求
if (req.method === 'OPTIONS') {
res.writeHead(204);
res.end();
return;
}
res.writeHead(200, {'Content-Type': 'application/json; charset=utf-8'});
res.end(JSON.stringify({code: 0, msg: '请求成功'}));
});
server.listen(3000, () => {
console.log('带跨域配置的Node.js服务已启动');
});
五、常见冲突解决方法
- 端口被占用:如果启动Node.js项目提示端口被占用,使用
netstat -ano | findstr "端口号"命令查看占用进程,关闭对应进程或者更换Node.js项目端口即可 - 环境变量不生效:如果命令行输入node提示不是内部命令,检查Node.js的安装路径是否添加到系统环境变量的Path中,添加后重启命令行工具即可
- phpEnv服务启动失败:如果修改phpEnv端口后服务启动失败,检查端口是否被其他程序占用,或者恢复默认端口配置后重启phpEnv
六、验证共存效果
同时启动phpEnv的Nginx/Apache服务和Node.js项目服务,分别访问PHP项目的地址和Node.js项目的地址,如果能同时正常响应,说明phpEnv环境下Node.js与PHP已经成功共存,可以正常开展后续开发工作。