php启动服务器后如何通过本地ip访问?
- 云服务器
- 2025-12-16
- 6
在 PHP 开发过程中,启动本地服务器是调试和运行代码的基础操作,PHP 自带了内置的 Web 服务器,无需额外配置即可快速启动,适合开发环境使用,本文将详细介绍 PHP 启动服务器的多种方法、常用参数、注意事项及常见问题解答。
PHP 内置服务器的基本使用
PHP 5.4.0 及以上版本内置了一个轻量级的 Web 服务器,基于 PHPSimpleServer 开发,支持路由解析、静态文件处理等功能,启动服务器的基本命令格式为:
php S localhost:8000
S 参数表示启动内置服务器,localhost:8000 指定监听地址和端口,执行命令后,终端会显示类似信息:
PHP 8.1.0 Development Server started at http://localhost:8000 Press CtrlC to quit
在浏览器访问 http://localhost:8000 即可运行当前目录下的 PHP 文件,默认情况下,服务器会将当前目录作为根目录,并自动处理 .php 文件的解析。
自定义路由与静态文件处理
内置服务器的核心优势之一是支持自定义路由规则,通过 t 参数可以指定根目录,而 rr 参数(PHP 7.4+)可启用路由重定向。
php S localhost:8000 t public/
上述命令将 public/ 目录作为根目录,避免暴露项目源码,对于非 PHP 文件(如 CSS、JS),服务器会直接返回静态内容,但需确保文件存在且权限正确。
若需处理复杂路由(如伪静态),可通过 .router.php 文件自定义逻辑,在项目根目录创建 .router.php:

该规则会将所有 /api/ 开头的请求转发到 api/ 目录,需注意,.router.php 仅在请求未被静态文件匹配时触发。
跨域与主机绑定
默认情况下,内置服务器仅允许 localhost 访问,若需跨域调试,可通过 t 参数结合 router.php 设置响应头。
<?php header("AccessControlAllowOrigin: *"); header("AccessControlAllowMethods: GET, POST");
对于多项目开发,可通过修改 hosts 文件(如 0.0.1 test.local)并启动服务器时指定域名:
php S test.local:8000
生产环境注意事项
虽然内置服务器方便快捷,但不推荐用于生产环境,原因如下:

- 性能限制:单线程处理,无法应对高并发请求。
- 功能缺失:不支持 HTTPS、虚拟主机、日志记录等企业级功能。
- 安全风险:默认无访问控制,易暴露敏感文件。
生产环境建议使用 Nginx + PHPFPM 或 Apache + mod_php 的组合,通过以下配置示例提升安全性:
server { listen 80; root /var/www/html; index index.php; location ~ .php$ { fastcgi_pass unix:/var/run/php/php8.1fpm.sock; include fastcgi_params; } location ~ /.ht { deny all; } }
常见问题与解决方案
以下是开发中可能遇到的问题及解决方法:
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 访问 PHP 文件显示源码 | PHP 未正确安装或解析器未加载 | 检查 PHP 安装,确保文件扩展名为 .php |
| 端口被占用 | 其他程序占用了指定端口 | 更换端口(如 php S localhost:8080)或终止占用进程 |
| 静态文件无法加载 | 文件路径错误或权限不足 | 检查文件是否存在,确保服务器有读取权限 |
相关问答FAQs
问题1:PHP 内置服务器支持 HTTPS 吗?
解答:PHP 内置服务器原生不支持 HTTPS,但可通过 OpenSSL 扩展实现,使用 OpenSSL 生成证书后启动:
openssl req newkey rsa:2048 new nodes x509 days 3650 keyout key.pem out cert.pem php S localhost:8000 t public/ cert.pem key.pem
这种方式仍不推荐用于生产环境,建议使用 Nginx 或 Apache 配置 HTTPS。
问题2:如何在多项目中复用同一个端口?
解答:若多个项目需使用同一端口(如 8000),可通过不同域名或路径区分。
- 项目1:php S project1.local:8000 t /path/to/project1
- 项目2:php S project2.local:8000 t /path/to/project2
同时修改 hosts 文件添加域名映射,或通过 Nginx 反向代理实现端口复用。
