为什么本地主机(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 时产生的文件权限问题驱动同步代码文件。
我用来实现这个目标的步骤如下。
在 Mac 上创建一个名为 ~/Users/myname/SitesNew 的文件夹。
在同一 Mac 上创建从该文件夹到 Dropbox 中同名文件夹的符号链接。然后您将在 Mac:
上有两个相同的文件夹
- ~/Users/myname/SitesNew <-- Mac
上的真实文件夹
- ~/Users/myname/Dropbox/SitesNew <-- Mac
上的符号文件夹
- 在所有设备上同步 Dropbox(如果您在任何设备上使用选择性同步,请确保添加 SitesNew 文件夹)。符号链接文件夹现在将在云中的 Dropbox 和 Windows PC 上显示为 真实 文件夹。在我的例子中,新的 Windows PC 文件夹位于:
- D:/Dropbox/SitesNew <-- Windows
上的真实文件夹
- 更新 Mac 上的 Apache httpd.conf 文件以识别位于 ~/Users/myname/SitesNew 的本地主机。
- 更新 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) 将文件夹和文件转换为正确的值。
我正在尝试将我的 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 时产生的文件权限问题驱动同步代码文件。
我用来实现这个目标的步骤如下。
在 Mac 上创建一个名为 ~/Users/myname/SitesNew 的文件夹。
在同一 Mac 上创建从该文件夹到 Dropbox 中同名文件夹的符号链接。然后您将在 Mac:
上有两个相同的文件夹- ~/Users/myname/SitesNew <-- Mac 上的真实文件夹
- ~/Users/myname/Dropbox/SitesNew <-- Mac 上的符号文件夹
- 在所有设备上同步 Dropbox(如果您在任何设备上使用选择性同步,请确保添加 SitesNew 文件夹)。符号链接文件夹现在将在云中的 Dropbox 和 Windows PC 上显示为 真实 文件夹。在我的例子中,新的 Windows PC 文件夹位于:
- D:/Dropbox/SitesNew <-- Windows 上的真实文件夹
- 更新 Mac 上的 Apache httpd.conf 文件以识别位于 ~/Users/myname/SitesNew 的本地主机。
- 更新 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) 将文件夹和文件转换为正确的值。