为什么本地主机(Document Root)在 Google Drive、Dropbox 或 Tresorit 上被 运行 阻止?

Why is localhost (DocumentRoot) blocked from running on GoogleDrive, Dropbox or Tresorit?

我正在尝试将我的 DocumentRoot(即本地主机)重新定位到同步文件夹(例如 Google Drive、Dropbox 或 Tresorit),但尝试失败并出现 403 错误。

在 Windows 机器上,我可以将本地主机从 D:/GoogleDrive/SitesG 文件夹配置为 运行;本地站点 运行 非常完美。

但是,在 Mac 上,当 运行退出基于云的存储文件夹(例如 Google Drive、Dropbox、Tresorit 等)时,localhost 将无法工作。

localhost 为 Users/myname/Sites 时一切正常。

但是,当我将 Users/myname/GoogleDrive/SitesG 中的 Mac 重新配置为 运行 时 - 例如通过编辑 httpd.conf 等文件 - localhost 被阻止。

显然问题与父文件夹(例如 Google Drive 或 Dropbox 或 Tresorit 文件夹)的权限有关。可以看到各个文件夹的权限如下

drwxr-xr-x  32 myname  staff  1024 30 Apr 02:23 Sites
drwxr-xr-x   22 myname  staff      704 30 May 21:01 SitesG
drwx------@ 61 myname  staff  1952 30 May 17:47 GoogleDrive

所以我的问题是:在 Mac (运行ning HighSierra) 上,是否可以将 DocumentRoot 重新定位到 GoogleDrive?或者 GoogleDrive 是否有一些固有的东西禁止本地主机成为 运行 Google Drive 文件夹?

将 Apache 虚拟主机定位到基于云的存储文件夹会产生许多 files/folders 权限问题。

与其重新定位您的 documentRoot 并更改大量设置和权限,您应该更轻松地为每个云存储项目在您的 Users/myname/Sites 文件夹中创建一个符号链接,指向您的 GoogleDrive/Dropbox网站文件夹。

假设您的 Dropbox 文件夹中有一个 "websiteA" 文件夹:

1) 转到您的 "Users/myname/Sites folder" 并创建这样一个符号链接

cd ~/Sites
ln -s ~/Dropbox/websiteA websiteA

当您在 Finder 中打开您的 ~/Sites 文件夹时,您已经创建了一个带有箭头的文件夹,指向 "websiteA" 基于云的文件夹。

2) 现在,您只需创建一个指向 ~/Sites/websiteA.

的虚拟主机

相反,您可以将 ~/Sites 文件夹全局更改为指向基于云的文件夹的符号链接,但逐个项目的方法更加灵活,因为它允许您同时管理本地和云基于项目。

非常感谢@DrFred 提供的上述解决方案,尽管我还没有机会对其进行测试,但我相信它会奏效。

这是我在收到任何答案之前设计的解决方案。它与上面弗雷德博士的非常相似,因为两者都使用符号链接解决了问题。为了完整性和额外的细节,我添加了我的。

如上所述,我在多个设备上开发(多个 Mac 和 Windows PC,并排),所以我的目标是拥有一个 localhost 开发文件夹 几乎可以在不同设备之间立即同步,无需检查 git 的文件 into/out,也不会 运行 使用 Google 时产生的文件权限问题驱动同步代码文件。

我用来实现这个目标的步骤如下。

  1. 在 Mac 上创建一个名为 ~/Users/myname/SitesNew 的文件夹。

  2. 在同一 Mac 上创建从该文件夹到 Dropbox 中同名文件夹的符号链接。然后您将在 Mac:

    上有两个相同的文件夹
    • ~/Users/myname/SitesNew <-- Mac
    • 上的真实文件夹
    • ~/Users/myname/Dropbox/SitesNew <-- Mac
    • 上的符号文件夹
  3. 在所有设备上同步 Dropbox(如果您在任何设备上使用选择性同步,请确保添加 SitesNew 文件夹)。符号链接文件夹现在将在云中的 Dropbox 和 Windows PC 上显示为 真实 文件夹。在我的例子中,新的 Windows PC 文件夹位于:
    • D:/Dropbox/SitesNew <-- Windows
    • 上的真实文件夹
  4. 更新 Mac 上的 Apache httpd.conf 文件以识别位于 ~/Users/myname/SitesNew 的本地主机。
  5. 更新 Windows PC 上的 Apache httpd.conf 以识别位于 D:/Dropbox/SitesNew 的本地主机。

从现在开始,一台设备上的任何本地主机开发工作(编辑、添加、删除)都将与另一台设备上的本地主机同步,即使跨不同的操作系统也是如此。

注意 1:此解决方案仅适用于 Dropbox,但不适用于 Google Drive,因为 Google Drive 在符号链接方面存在问题,并且还会以不同的方式混淆权限,尤其是在 Mac。

注意 2:如果之前有任何文件保存在 Google 驱动器上(例如,最初我的 Windows 站点文件夹位于 D:\GoogleDrive\SitesOld),请同时使用 chmod (a)确定权限的正确值(例如,参见 https://chmod-calculator.com),以及 (b) 将文件夹和文件转换为正确的值。