You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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目录的访问权限

    1. 右键点击/Volumes/photorepos/Partners目录,选择「显示简介」
    2. 点击窗口右下角的锁图标,输入你的Mac密码解锁权限设置
    3. 在「共享与权限」区域,点击「+」按钮,搜索并添加_www用户(如果找不到,直接输入_www回车添加)
    4. _www用户设置「读取」或「读取与写入」权限(根据你的需求选择)
    5. 点击窗口底部的齿轮图标,选择「应用到包含的项目」,确保子目录也继承这个权限
  • 第三步:重启XAMPP的Apache服务
    打开XAMPP控制面板,停止然后重新启动Apache服务,让权限设置生效。

  • 备选方案:修改Apache的运行用户(适合本地开发环境)
    如果上面的权限设置没生效,你可以让Apache用你当前的用户身份运行:

    1. 打开XAMPP的Apache配置文件httpd.conf(在XAMPP控制面板里点击Apache的「Config」按钮选择httpd.conf
    2. 找到以下两行:
      User _www
      Group _www
      
    3. _www改成你当前的Mac用户名和用户组(比如你的用户名是john,用户组是staff,就改成User johnGroup staff
    4. 保存文件后重启Apache服务

做完这些操作后,再运行你的PHP代码:

$dir = opendir("/Volumes/photorepos/Partners");
echo $dir;

应该就能正常打开目录了。

内容的提问来源于stack exchange,提问作者Brian Flieck

火山引擎 最新活动