Mac HighSierra下将localhost的DocumentRoot移至云同步文件夹遇阻咨询
解决Mac High Sierra下Apache DocumentRoot移至Google Drive的403错误
没问题,Mac High Sierra下完全可以把Apache的DocumentRoot迁移到Google Drive文件夹,不是Google Drive本身有限制,核心问题出在文件夹权限和Google Drive的特殊扩展属性上,咱们一步步来分析解决:
问题根源分析
从你给出的权限信息能看到关键差异:
- 正常的
Sites文件夹权限是drwxr-xr-x,意味着其他用户(包括Apache运行的_www用户)有执行权限,能进入文件夹访问内容 - 而
GoogleDrive文件夹的权限是drwx------@,只有你自己(myname)有读写执行权限,_www用户完全无法进入这个文件夹,自然会返回403禁止访问 - 末尾的
@符号表示该文件夹带有Google Drive添加的扩展属性,这些属性也可能干扰Apache的访问
具体解决步骤
1. 调整文件夹权限,让Apache能访问
打开终端,依次执行以下命令:
- 给GoogleDrive文件夹添加其他用户的执行权限:
sudo chmod o+x ~/GoogleDrive - 给SitesG文件夹同样添加其他用户的执行权限:
sudo chmod o+x ~/GoogleDrive/SitesG - 确保网站内容的所有子文件夹和文件都有合适的权限:
# 给所有子文件夹添加执行权限 find ~/GoogleDrive/SitesG -type d -exec chmod o+x {} \; # 给所有文件添加读权限 find ~/GoogleDrive/SitesG -type f -exec chmod o+r {} \;
2. 处理Google Drive的扩展属性
Google Drive会给同步文件夹添加特殊属性,可能影响Apache访问:
- 先查看当前的扩展属性:
xattr ~/GoogleDrive - 移除和Google Drive相关的属性(比如
com.google.drivefs.folder.metadata):sudo xattr -d com.google.drivefs.folder.metadata ~/GoogleDrive注意:如果不确定属性用途,可以先备份属性再移除,避免影响同步功能
3. 修改Apache配置,允许访问目标目录
打开Apache的配置文件(默认路径是/etc/apache2/httpd.conf):
- 找到原来的
<Directory "/Users/myname/Sites">配置块,复制一份修改为目标目录:<Directory "/Users/myname/GoogleDrive/SitesG"> Options Indexes FollowSymLinks MultiViews AllowOverride All Require all granted </Directory> - 同时修改
DocumentRoot为目标路径:DocumentRoot "/Users/myname/GoogleDrive/SitesG"
4. 重启Apache服务
执行命令重启Apache,让配置生效:
sudo apachectl restart
后续注意事项
- Google Drive的同步操作偶尔会重置文件/文件夹权限,如果之后再次出现403,可以重新执行权限调整的命令
- 不要把Apache的配置文件放在Google Drive同步目录里,只同步网站内容即可
- 如果是通过Homebrew安装的Apache,配置文件路径可能是
/usr/local/etc/httpd/httpd.conf,请对应调整
内容的提问来源于stack exchange,提问作者TechnoCat




