MacOS下XAMPP的PHP无法访问外接磁盘文件求助
问题描述
Warning: file_get_contents(/Volumes/Disk/Folder/File.json): Failed to open stream: Operation not permitted
在MacOS系统通过XAMPP安装的Apache环境中,访问外接磁盘文件/目录时出现上述错误。已尝试以下操作但均无效:
sudo chown -R daemon:daemon …sudo chmod -R 0777 …- 磁盘>显示简介>开启/关闭「忽略此宗卷的所有权」
- 系统偏好设置>安全性与隐私>为httpd开启「完全磁盘访问权限」
- 在httpd.conf中创建别名
chown/chmod命令在系统磁盘正常生效,但在外接挂载磁盘上无效,错误始终为Failed to open, Operation not permitted。
解决方案建议
1. 检查外接磁盘格式
MacOS权限管控对非APFS格式的外接盘支持有限:
- NTFS格式:使用Paragon NTFS、Tuxera NTFS等工具挂载为支持权限的可读写模式,或备份数据后将磁盘格式化为APFS。
- FAT32格式:该格式本身不支持Unix权限体系,可修改
/etc/fstab添加挂载配置:
替换LABEL=你的磁盘名称 none msdos rw,auto,users,uid=daemon,gid=daemonLABEL=你的磁盘名称为实际磁盘标签,执行sudo mount -a生效。
2. 修改Apache运行用户
XAMPP默认让Apache以daemon用户运行,可改为当前系统用户以获取外接盘访问权限:
- 打开XAMPP的httpd.conf文件(路径一般为
/Applications/XAMPP/etc/httpd.conf) - 找到并修改以下两行:
用户名可通过User 你的系统用户名 Group 你的系统用户组whoami查看,用户组可通过id -g -n查看 - 重启XAMPP的Apache服务
3. 完善隐私权限设置
- 将XAMPP本体添加到「完全磁盘访问权限」列表(系统偏好设置>安全性与隐私>隐私>完全磁盘访问)
- 修改权限后重启系统,确保设置彻底生效
4. 使用符号链接替代别名
在Apache根目录创建指向外接磁盘目录的符号链接:
ln -s /Volumes/Disk/Folder /Applications/XAMPP/htdocs/external-folder
之后通过http://localhost/external-folder/File.json访问文件
5. 调整磁盘挂载参数
- 执行
mount命令查看外接磁盘挂载参数,确认是否存在noowners等限制权限的参数 - 若有,重新挂载磁盘:
替换sudo umount /Volumes/Disk sudo mount -o rw,owners /dev/disk2s1 /Volumes/Disk/dev/disk2s1为实际磁盘设备名(可通过diskutil list查看)
内容的提问来源于stack exchange,提问作者Wald
相关产品推荐
相关产品推荐

