Почему 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 для синхронизации файлов кода.
Шаги, которые я использовал для достижения этой цели, были следующие.
Создайте папку с именем ~/Users/myname/SitesNew на Mac.
Создайте символическую ссылку из этой папки в папку с тем же именем в Dropbox на том же Mac. После этого у вас будет две одинаковые папки на Mac:
- ~/Users/myname/SitesNew <- реальная папка на Mac
- ~ / Users / myname / Dropbox / SitesNew <- символическая папка на Mac
- Синхронизируйте Dropbox на всех устройствах (обязательно добавьте папку SitesNew, если вы используете выборочную синхронизацию на любом устройстве). Папка символической ссылки теперь будет отображаться как настоящая папка в Dropbox в облаке и на ПК с Windows. В моем случае новая папка Windows PC находилась по адресу:
- D: / Dropbox / SitesNew <- реальная папка в Windows
- Обновите файлы Apache httpd.conf на Mac, чтобы распознать localhost в ~/Users/myname/SitesNew.
- Обновите 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 на символическую ссылку, указывающую на вашу облачную папку, но подход "проект за проектом" является более гибким, поскольку он позволяет вам управлять как локальными, так и облачными проектами.