Почему localhost (DocumentRoot) заблокирован для работы в GoogleDrive, Dropbox или Tresorit?

Я пытаюсь переместить мой DocumentRoot (то есть localhost) в синхронизированную папку (например, Google Drive, Dropbox или Tresorit), но попытка не удалась с ошибкой 403.

На машинах Windows я могу настроить localhost для запуска из папки D:/GoogleDrive/SitesG; местный сайт работает отлично.

Однако на Mac локальный хост не будет работать, если у него не хватает облачной папки хранения, такой как Google Drive, Dropbox, Tresorit и т. Д.

Все хорошо, когда localhost находится в Users/myname/Sites.

Однако, когда я переконфигурирую Mac для запуска из Users/myname/GoogleDrive/SitesG - например, путем редактирования файлов httpd.conf и т. Д., - localhost блокируется.

Очевидно, что проблема заключается в разрешениях на родительскую папку (например, на Google Диске, в 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 (под управлением HighSierra) возможно ли переместить DocumentRoot в GoogleDrive? Или в GoogleDrive есть что-то, что запрещает локальному запуску папки на Google Диске?

2 ответа

Решение

Большое спасибо @DrFred за вышеупомянутое решение, которое, я уверен, сработает, хотя у меня не было возможности протестировать его.

Вот решение, которое я разработал до получения каких-либо ответов. Это очень похоже на приведенное выше описание доктора Фреда в том, что оба они решают проблему с символическими ссылками. Я добавляю свою для полноты и дополнительных деталей.

Как и выше, я занимаюсь разработкой на нескольких устройствах (несколько компьютеров Mac и Windows, рядом), поэтому моей целью было создание единой папки разработки localhost, которая почти мгновенно синхронизировалась бы между различными устройствами без необходимости проверять файлы в / из git и без проблем с правами доступа к файлам, созданным при использовании Google Drive для синхронизации файлов кода.

Шаги, которые я использовал для достижения этой цели, были следующие.

  1. Создайте папку с именем ~/Users/myname/SitesNew на Mac.

  2. Создайте символическую ссылку из этой папки в папку с тем же именем в Dropbox на том же Mac. После этого у вас будет две одинаковые папки на Mac:

    • ~/Users/myname/SitesNew <- реальная папка на Mac
    • ~ / Users / myname / Dropbox / SitesNew <- символическая папка на Mac
  3. Синхронизируйте Dropbox на всех устройствах (обязательно добавьте папку SitesNew, если вы используете выборочную синхронизацию на любом устройстве). Папка символической ссылки теперь будет отображаться как настоящая папка в Dropbox в облаке и на ПК с Windows. В моем случае новая папка Windows PC находилась по адресу:
    • D: / Dropbox / SitesNew <- реальная папка в Windows
  4. Обновите файлы Apache httpd.conf на Mac, чтобы распознать localhost в ~/Users/myname/SitesNew.
  5. Обновите Apache httpd.conf на ПК с Windows, чтобы распознать localhost в D:/Dropbox/SitesNew.

С этого момента любая работа по разработке localhost (редактирование, добавление, удаление) на одном устройстве будет синхронизироваться с localhost на другом, даже в разных операционных системах.

Примечание 1: Это решение работает только с Dropbox, но не с Google Drive, так как Google Drive имеет проблемы с символическими ссылками, а также по-другому портит разрешения, особенно на Mac.

Примечание 2: Если какие-либо файлы ранее были сохранены на Google Диске (например, изначально папка моих сайтов Windows находилась в D:\GoogleDrive\SitesOld), используйте chmod both (a), чтобы определить правильные значения для разрешений (например, см. https://chmod-calculator.com/) и (b) для преобразования папок и файлов в правильные значения.

Размещение виртуального хоста Apache в облачной папке хранения создаст много проблем с разрешениями файлов / папок.

Вместо того, чтобы переместить ваш documentRoot и изменить множество настроек и разрешений, вам будет проще для каждого проекта, сохраненного в облаке, создать символическую ссылку в папке Users/myname/Sites, указывающую на папку вашего сайта GoogleDrive/Dropbox.

Представьте, что у вас есть папка websiteA внутри вашей папки Dropbox:

1) Перейдите в папку "Users/myname/Sites" и создайте такую ​​символическую ссылку

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

Как вы можете проверить, открыв папку ~/Sites в Finder, вы создали папку со стрелкой на ней, указывающей на облачную папку websiteA.

2) Теперь вам просто нужно создать виртуальный хост, указывающий на ~/Sites/websiteA.

Вместо этого вы можете глобально изменить папку ~/Sites на символическую ссылку, указывающую на вашу облачную папку, но подход "проект за проектом" является более гибким, поскольку он позволяет вам управлять как локальными, так и облачными проектами.

Другие вопросы по тегам