Mac上XAMPP访问PHP文件报Access forbidden!或Object not found!,主因是Apache配置未授权目录(需改AllowOverride All和Require all granted)及用户权限不匹配(推荐chown -R _www:_www + chmod 755而非盲目777),并须终端重启Apache。

Mac 上 XAMPP 启动后访问 PHP 文件报 Access forbidden! 或 Object not found!,基本就是权限或 Apache 配置没对上 —— 不是 PHP 本身的问题,而是 Apache 拒绝读取你的目录或文件。
为什么 chmod -R 777 不是万能解?
很多教程一上来就让执行 chmod -R 777 /Applications/XAMPP/xamppfiles/htdocs,看似立竿见影,但隐患明显:
- Apache 进程(通常以
_www用户运行)确实能读写了,但 macOS 的 SIP(System Integrity Protection)可能拦截某些递归赋权操作,尤其在较新系统(macOS 12+)上会静默失败 -
777是过度放权,开发环境虽可接受,但一旦误开外网或测试域名,等于把整个htdocs目录裸奔暴露 - 真正卡住的往往不是文件权限,而是 Apache 的
配置未授权该路径
更稳妥的做法是:先确认 Apache 进程用户,再针对性赋权 + 修改配置。
必须改的两个 Apache 配置项:AllowOverride 和 Require
默认 XAMPP 的 /Applications/XAMPP/etc/httpd.conf 对根目录限制极严。仅靠改文件权限无法绕过:
- 找到
块(注意路径是否含空格或大小写) - 把
AllowOverride None改成AllowOverride All—— 否则.htaccess(如 ThinkPHP 的重写规则)直接被忽略 - 把
Require local改成Require all granted—— 否则连本机localhost都可能被拒(尤其开启虚拟主机后)
改完记得重启 Apache:sudo /Applications/XAMPP/xamppfiles/xampp restartapache。
XAMPP 8.0.30 是一款免费、开源的跨平台 Web 服务器集成包,专为快速搭建本地 PHP 开发环境而设计。该版本核心组件包括:Apache 2.4.56、MySQL 8.0.33、PHP 8.0.30、phpMyAdmin 5.2.1 等。它支持 Windows、Linux 和 macOS 系统,可让开发者在个人电脑上轻松模拟服务器环境,无需复杂配置即可运行 WordPress、Thin
虚拟主机下 DocumentRoot 目录权限怎么设?
如果你用 httpd-vhosts.conf 配了自定义站点(比如 DocumentRoot "/www/myapp"),Apache 默认不会自动继承 htdocs 的权限逻辑:
- 确保该目录归属正确:
sudo chown -R _www:_www /www/myapp(_www是 macOS 上 Apache 的标准运行用户) - 目录权限建议用
755(而非777):sudo chmod -R 755 /www/myapp - 如果目录里有需要写入的子目录(如
runtime、log),单独加强:sudo chmod -R 775 /www/myapp/runtime - 检查
httpd-vhosts.conf中对应块是否也写了Require all granted和AllowOverride All
漏掉任意一项,都可能导致 403 或 404 —— 而且错误日志里往往只报“client denied by server configuration”,不指明具体哪一行配置惹的祸。
hosts 文件和端口冲突常被忽略
即使所有权限和配置都对了,仍打不开?重点查这两处:
-
/etc/hosts里加的域名(如127.0.0.1 myapp.local)必须和httpd-vhosts.conf里的ServerName完全一致,包括大小写和末尾点号(myapp.local.和myapp.local是不同域名) - Apache 默认监听
80端口,但 macOS 自带的airplayreceiver或其他服务可能已占。用sudo lsof -i :80查占用进程;若被占,要么杀掉它,要么在httpd.conf里改Listen 8080并访问http://localhost:8080
最麻烦的是:这些配置改完后,Apache 不报错也不生效 —— 因为 XAMPP 控制面板有时会缓存旧配置,务必用终端命令重启:sudo /Applications/XAMPP/xamppfiles/xampp restartapache,别只点面板上的 “Stop → Start”。










