卸载php需先定位来源再清理:查which php、php -v、php --ini及brew list确认安装方式;homebrew安装的用brew uninstall --force php@x.x并cleanup;手动或集成环境安装的需删路径、清环境变量和配置;最后验证进程、socket、web配置及命令是否彻底消失。

先确认PHP是怎么装上的,再动手删
直接 rm -rf 一堆路径看似痛快,但 macOS 上 PHP 可能来自五种地方:系统自带(12.0+ 已移除,但旧系统仍有)、Homebrew、XAMPP/MAMP、手动编译安装,或通过 Docker/VS Code 插件间接引入。删错源,轻则命令失效,重则影响其他开发工具(比如 Laravel Sail 或 Valet)。所以第一步永远是查清楚:
- 运行
which php—— 看路径:如果是/usr/bin/php,说明是系统残留(macOS Monterey 及更早);如果是/opt/homebrew/bin/php或/usr/local/bin/php,大概率是 Homebrew 装的; - 运行
php -v和php --ini—— 注意输出里 “Loaded Configuration File” 指向哪,比如/opt/homebrew/etc/php/8.2/php.ini就暴露了 brew + 版本; - 运行
brew list | grep php—— 如果有返回,说明 brew 管理着它; - 检查
/Applications/XAMPP或/Applications/MAMP是否存在 —— 这类集成环境得走自己卸载流程,不能只删 bin。
Homebrew 安装的 PHP:用 brew uninstall + cleanup
这是目前 macOS 上最主流的方式,也是最干净的卸载路径。brew 会自动处理符号链接、配置文件和依赖,但要注意版本号必须精确匹配,否则残留会卡住后续重装。
- 先列出所有已装 PHP 版本:
brew list | grep php@(常见如php@8.2、php@8.3); - 逐个卸载:
brew uninstall --force php@8.2 php@8.3(--force防止因被其他 formula 依赖而拒绝卸载); - 清理缓存与无用依赖:
brew cleanup和brew autoremove; - 检查是否清空:
which php应无输出,php -v应报command not found。
⚠️ 容易踩的坑:只运行 brew uninstall php 会失败,因为 brew 中没有叫 php 的包名 —— 它全是带版本号的(php@8.2),漏掉一个,which php 还能搜到,你以为删干净了,其实没。
手动或集成环境安装的 PHP:删路径 + 清环境变量
如果你用过 XAMPP、MAMP、或者从官网下载 tar.gz 编译安装,brew 不知情,就得自己扫雷。重点不是删二进制,而是断掉它们被调用的“路”。
立即学习“PHP免费学习笔记(深入)”;
- 停止服务:
sudo apachectl stop(如果启用了 Apache)、sudo pkill -f php-fpm(干掉所有 fpm 进程); - 删主程序目录:
sudo rm -rf /Applications/XAMPP、sudo rm -rf /Applications/MAMP,或手动安装的/usr/local/php、/usr/local/bin/php*; - 清环境变量:打开
~/.zshrc(macOS Catalina+ 默认 shell)或~/.bash_profile,删掉含export PATH=".../php/bin:$PATH"或export PATH="/usr/local/bin:$PATH"的行 —— 否则即使删了/usr/local/bin/php,PATH 还在指向一个不存在的位置,终端可能报奇怪错误; - 删配置残留:
rm -rf ~/Library/Caches/Homebrew/php*(brew 缓存)、rm -rf /usr/local/etc/php(brew 配置目录)、rm -rf /etc/php(Linux 风格路径,macOS 一般没有,但某些手动安装会建)。
验证是否真干净:别信“看起来没了”
很多用户删完 php -v 报错就以为完事了,结果过两天跑 Composer 报 php: command not found,或者 Valet 启动失败 —— 因为还有隐藏进程、socket 文件或扩展没清。
- 查进程:
ps aux | grep php,确保无php-fpm、httpd(带 php 模块)或nginx(proxy_pass 到 php); - 查 socket:
ls /usr/var/run/php-fpm.*或ls /opt/homebrew/var/run/php-fpm.*,存在就sudo rm; - 查 Web 服务器配置:打开
/opt/homebrew/etc/httpd/httpd.conf或/usr/local/etc/nginx/nginx.conf,搜索php、LoadModule php_module、fastcgi_pass,注释掉相关行; - 终极验证:
command -v php、type php、php --version全部无输出或报错,才算真正退出你的系统。
真正难清理的从来不是二进制文件,而是那些被其他工具悄悄写入的 PATH、被 Web 服务加载的模块、以及你忘了自己曾经配过的 ~/.curlrc 里那行 php -r "..." —— 卸载 PHP,本质是恢复系统对“php”这个命令的无知状态。











