在搭建php开发环境的过程中,很多开发者都会遇到apache服务启动失败的情况,排查后发现大多是默认的80端口被其他程序占用导致的。遇到这种问题不用慌,下面给大家介绍两种实用的解决方法,以及对应的操作步骤。

方法一:排查并关闭占用端口的进程
如果占用端口的程序不是必须运行的,我们可以直接关闭对应进程释放端口,步骤如下:
1. 确认占用端口的进程
首先打开命令行工具,输入以下命令查看哪个进程占用了80端口:
# Windows系统命令 netstat -ano | findstr :80 # Linux/Mac系统命令 lsof -i:80
命令执行后会显示占用端口的进程ID(PID),记住这个ID。
2. 关闭对应进程
根据查到的PID关闭进程:
# Windows系统命令,替换PID为实际查到的进程ID taskkill /PID PID /F # Linux系统命令,替换PID为实际查到的进程ID kill -9 PID # Mac系统命令,替换PID为实际查到的进程ID kill -9 PID
进程关闭后,重新启动apache服务即可正常使用80端口。
方法二:修改apache监听端口
如果占用端口的程序需要运行,无法关闭,我们可以修改apache的监听端口,避免端口冲突,具体步骤如下:
1. 找到apache配置文件
apache的端口配置在核心配置文件中,不同系统下文件位置不同:
- Windows系统:一般在apache安装目录下的conf/httpd.conf
- Linux系统:一般在/etc/apache2/ports.conf或者/etc/httpd/conf/httpd.conf
- Mac系统:一般在/usr/local/etc/httpd/httpd.conf
2. 修改监听端口配置
打开配置文件,找到Listen 80这一行,把80改成你想要使用的端口,比如8080,修改后如下:
# 原配置 Listen 80 # 修改后配置 Listen 8080
如果配置文件中还有ServerName localhost:80的配置,也需要把后面的80改成对应的新端口:
# 原配置 ServerName localhost:80 # 修改后配置 ServerName localhost:8080
3. 重启apache服务
修改完配置后,需要重启apache服务让配置生效:
# Windows系统,在apache安装目录的bin目录下执行 httpd -k restart # Linux系统 systemctl restart apache2 # 或者 systemctl restart httpd # Mac系统 sudo apachectl restart
修改端口后的注意事项
修改apache端口后,访问php项目时需要在地址后面加上端口号,比如原来访问http://localhost/index.php,现在需要访问http://localhost:8080/index.php。
如果使用了虚拟主机配置,还需要检查虚拟主机配置文件中的端口设置,确保和修改后的监听端口一致,虚拟主机配置示例:
<VirtualHost *:8080>
ServerName test.php.local
DocumentRoot "D:/php_projects/test"
<Directory "D:/php_projects/test">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>另外如果服务器有防火墙,需要把新修改的端口开放,避免外部无法访问,比如Linux系统开放8080端口的命令:
# 开放8080端口 firewall-cmd --zone=public --add-port=8080/tcp --permanent # 重新加载防火墙规则 firewall-cmd --reload
按照以上步骤操作,就可以顺利解决php环境下apache端口被占用的问题,让开发环境正常运行。