Mac下XAMPP使用PHP opendir访问SMB挂载目录报错求助
解决Mac XAMPP环境下PHP opendir访问SMB挂载目录失败的问题
我之前帮不少开发者解决过Mac XAMPP环境下访问SMB挂载目录的问题,你遇到的opendir("/Volumes/photorepos/Partners")报"No such file or directory"的错误,核心原因是XAMPP的Apache进程没有访问这个SMB目录的权限——终端是用你的用户身份运行的,而Apache默认是用_www用户执行的,两者的权限范围不一样。
下面是具体的解决步骤:
第一步:确认Apache的运行用户
打开终端执行以下命令,查看Apache进程的运行用户:ps aux | grep httpd输出里你会看到类似
_www的用户名,这就是Apache当前的运行身份。第二步:给Apache用户赋予SMB目录的访问权限
- 右键点击
/Volumes/photorepos/Partners目录,选择「显示简介」 - 点击窗口右下角的锁图标,输入你的Mac密码解锁权限设置
- 在「共享与权限」区域,点击「+」按钮,搜索并添加
_www用户(如果找不到,直接输入_www回车添加) - 给
_www用户设置「读取」或「读取与写入」权限(根据你的需求选择) - 点击窗口底部的齿轮图标,选择「应用到包含的项目」,确保子目录也继承这个权限
- 右键点击
第三步:重启XAMPP的Apache服务
打开XAMPP控制面板,停止然后重新启动Apache服务,让权限设置生效。备选方案:修改Apache的运行用户(适合本地开发环境)
如果上面的权限设置没生效,你可以让Apache用你当前的用户身份运行:- 打开XAMPP的Apache配置文件
httpd.conf(在XAMPP控制面板里点击Apache的「Config」按钮选择httpd.conf) - 找到以下两行:
User _www Group _www - 把
_www改成你当前的Mac用户名和用户组(比如你的用户名是john,用户组是staff,就改成User john和Group staff) - 保存文件后重启Apache服务
- 打开XAMPP的Apache配置文件
做完这些操作后,再运行你的PHP代码:
$dir = opendir("/Volumes/photorepos/Partners"); echo $dir;
应该就能正常打开目录了。
内容的提问来源于stack exchange,提问作者Brian Flieck




