php -s localhost:8000 是 php 5.4+ 自带的 cli 内置 web 服务器,仅限开发、零配置、无后台进程、不改系统设置;纯净性依赖系统 php 且易受 homebrew path 干扰,遇 mysql 扩展或重写需求须切换方案。

php -S localhost:8000 是什么,为什么它最“纯净”
它不是服务端软件,而是 PHP 自带的 CLI 内置 Web 服务器(PHP 5.4+ 就有),只在当前终端生命周期内运行,关掉终端就彻底消失。没有后台进程、不改系统配置、不监听 80 端口、不写日志到 /var/log,连 php.ini 都只读你当前环境下的那一份。
常见错误现象:php: command not found(PATH 没生效)、访问 http://localhost:8000 显示空白(没放 index.php)、404(请求路径下真没那个文件)。
- 先确认系统 PHP 是否可用:运行
which php,输出/usr/bin/php才是系统自带;若为空,需临时加 PATH:export PATH="/usr/bin:$PATH" - 必须在项目根目录执行命令,不能在 ~/Downloads 或 /tmp 下乱跑
- 它不自动找
index.php,得显式指定路由脚本才能支持重写,比如:php -S localhost:8000 router.php
Homebrew 安装的 PHP 会污染这个“纯净”吗
会——只要你没管好 PATH。Homebrew 默认把 php 装在 /opt/homebrew/bin/php(Apple Silicon)或 /usr/local/bin/php(Intel),一旦你把它加进 ~/.zshrc 并 source,终端里所有 php 命令就默认走 Homebrew 版,php -S 也跟着变。
想保留系统 PHP 的纯净性,就别动 PATH;想用 Homebrew 版又不想全局覆盖,可以用绝对路径调用:/opt/homebrew/bin/php -S localhost:8000。
-
php --ini是唯一靠谱方式查当前生效的php.ini路径,别猜/etc/php.ini或~/php.ini - Homebrew 安装后默认不启用扩展(如
pdo_mysql),但php -S本身不需要这些——除非你的脚本真去连 MySQL - 如果你只需要
echo "hello"或处理表单 POST,系统 PHP +php -S已经够用,加装 Homebrew 是冗余操作
哪些情况必须放弃 php -S 改用其他方案
它本质是个玩具服务器,官方文档明确写着“for development purposes only”。以下任一条件成立,你就该切到 Homebrew + Nginx + PHP-FPM 或 Docker:
- 需要
.htaccess或 URL 重写(比如 Laravel 的public/index.php入口) - 要同时跑多个 PHP 项目且端口/配置互不干扰
- 脚本里用了
$_SERVER['DOCUMENT_ROOT']或依赖 Apache/Nginx 设置的特定 CGI 变量 - 必须连接 MySQL 并启用
mysqli或pdo_mysql扩展——系统 PHP 默认不带,编译安装极麻烦,Homebrew 一键搞定
这时候“纯净”让位于“可用”:Homebrew 的 php@8.3 装完就有 pdo_mysql,php-fpm 监听 127.0.0.1:9000,Nginx 配个 fastcgi_pass 就行——比修系统 Apache 的 libphp.so 路径省心十倍。
最后提醒一个真实坑点
macOS Sonoma(2023)及更新系统预装的是 PHP 8.1+,但 Apple 不保证后续版本继续预装,也不提供任何升级通道。某天你发现 php -v 报错,大概率是系统更新干掉了它——这不是故障,是 Apple 的主动弃用。所以“纯净”是有保质期的,关键逻辑验证完,该迁移到 Homebrew 就别硬扛。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











