Mac彻底卸载PHP的完整教程
2026-03-10 17:00:47
0浏览
收藏
想彻底卸载 macOS 上的 PHP?别急着狂敲 rm -rf——它可能来自系统残留、Homebrew、XAMPP/MAMP、手动编译,甚至 Docker 或 VS Code 插件,删错源头轻则命令失效,重则拖垮 Laravel Sail、Valet 等开发工具。本文手把手教你先精准溯源(用 which php、php --ini、brew list 等锁定安装方式),再分场景清理:Homebrew 用户必须带版本号强制卸载(如 brew uninstall --force php@8.3)并 cleanup;集成环境需完整卸载应用+清除 PATH 和配置;最后还要扫清隐藏进程、socket 文件、Web 服务器模块和残留环境变量——真正干净的标准不是“php -v 报错”,而是系统彻底“忘记” php 这个命令的存在。

先确认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 不知情,就得自己扫雷。重点不是删二进制,而是断掉它们被调用的“路”。
- 停止服务:
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”这个命令的无知状态。
以上就是《Mac彻底卸载PHP的完整教程》的详细内容,更多关于的资料请关注golang学习网公众号!
360安全卫士限制网速设置教程
- 上一篇
- 360安全卫士限制网速设置教程
- 下一篇
- Golangpanic恢复方法与风险解析
查看更多
最新文章
-
- 文章 · php教程 | 1小时前 | 异常处理 · PHP · php Fiber Fiber::resume Fiber::throw
- PHP Fiber 抛出异常后还能再次 resume 吗
- 481浏览 收藏
-
- 文章 · php教程 | 15小时前 |
- PHP array_find 怎么同时取得命中的键和值
- 110浏览 收藏
-
- 文章 · php教程 | 19小时前 |
- PHP json_validate 怎么只检查 JSON 而不构造数组
- 425浏览 收藏
-
- 文章 · php教程 | 1天前 | 后端开发 · php教程 · php filter_var FILTER_VALIDATE_BOOLEAN FILTER_NULL_ON_FAILURE 布尔验证
- PHP filter_var 怎么区分验证失败和合法的 false
- 428浏览 收藏
-
- 文章 · php教程 | 1天前 |
- PHP ini_parse_quantity 怎么解析内存大小配置值
- 338浏览 收藏
-
- 文章 · php教程 | 1天前 |
- PHP Randomizer::pickArrayKeys 怎么无重复抽样键名
- 397浏览 收藏
-
- 文章 · php教程 | 1天前 |
- PHP match 为什么使用严格比较
- 414浏览 收藏
-
- 文章 · php教程 | 1天前 | 数据结构 · php教程 · php SplPriorityQueue FIFO 稳定优先队列
- PHP SplPriorityQueue 相同优先级元素顺序怎么控制
- 441浏览 收藏
-
- 文章 · php教程 | 1天前 | 性能优化 · session · php教程 · php session.lazy_write 会话文件 SessionHandler
- PHP session.lazy_write 为什么能减少会话文件写入
- 139浏览 收藏
查看更多
课程推荐
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
查看更多
AI推荐
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 345次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 408次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 406次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 369次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 191次使用
查看更多
相关文章
-
- PHP JSON_THROW_ON_ERROR 抛错后怎么保留原始字段位置
- 2026-09-09 501浏览
-
- PHP 8.5 array_last() 怎么处理空数组:从 null 结果到兼容旧版本的 Polyfill
- 2026-08-16 501浏览
-
- 宝塔配置Ruby环境:RVM+Nginx反代教程
- 2026-05-29 501浏览
-
- unset函数作用范围详解
- 2026-05-29 501浏览
-
- VS Code配置Xdebug教程:PHP调试技巧全解析
- 2026-05-13 501浏览
