Как мне снова заставить мой каталог пользователя работать в сети?

26

Я включил общий доступ к веб-сайту в Lion и веб-сайт http://localhost/~user, где userнаходится мой каталог User. Когда я обновился до Mountain Lion, общий доступ к Интернету (Apache) остался включенным, и я могу зайти на localhost и получить «Это работает!» веб-страница по умолчанию, но я больше не могу получить доступ к своей странице пользователя. Ошибка

запрещено

У вас нет прав доступа к / ~ пользователю / на этом сервере.

Как мне повторно включить веб-страницу моего каталога пользователя?

Indiv
источник

Ответы:

18

Вот как вы можете повторно включить веб-страницу с помощью командной строки с помощью терминала.

Сначала скопируйте это и вставьте в Терминал. Возможно, вам придется нажать enterпосле вставки, чтобы запустить его. Он запросит ваш пароль, потому что он добавляет файл в системный каталог.

USER_DIR=$(basename $(echo ~))
sudo bash -c "cat > /etc/apache2/users/$USER_DIR.conf" <<TEXT
<Directory "/Users/$USER_DIR/Sites">
     Options Indexes MultiViews
     AllowOverride None
     Order allow,deny
     Allow from all
</Directory>
TEXT

Затем выполните эту команду, чтобы перезапустить веб-сервер:

sudo apachectl restart
Indiv
источник
Извините, моя ошибка, вам это нужно и для имени файла conf. Тем не менее, $ (basename ~) также должно работать
nohillside
1
Я сделал что-то немного другое, чем это. Спасибо всем за информацию, которая помогла мне создать собственное решение для моей установки. Я добавил блок «Каталог», который у вас есть, в /etc/apache2/extra/httpd-userdir.conf с «*» вместо «$ USER_DIR». Это включает пользовательские каталоги для всех пользователей, которые имеют каталог «Сайты».
Джейсон
1

Я должен был добавить FollowSymLinksследующее к моему /etc/apache2/users/username.conf:

<Directory "/Users/username/Sites/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory>

( usernameдолжен быть заменен вашим реальным именем пользователя)

Матье Риглер
источник
1

Вот однострочная команда терминала, которая включит встроенный в MacOS сервер Apache и позволит вам использовать каталог Sites в вашей папке User. Он совместим с последней версией macOS на момент написания этой статьи (Mojave), а также был протестирован для работы с Sierra и High Sierra. Я подозреваю, что это будет работать и с другими версиями - я приложил все усилия, чтобы написать это в перспективе.

mkdir ~/Sites ; sudo bash -c "printf '<Directory \"/Users/`whoami`/Sites/\">\n\tAddLanguage en .en\n\tAllowOverride All\n\tOptions Indexes MultiViews FollowSymLinks\n\tRequire all granted\n</Directory>' > /etc/apache2/users/`whoami`.conf ; echo 'AddDefaultCharset utf-8' >> /etc/apache2/httpd.conf ; sed -i '' '/LoadModule userdir_module libexec\/apache2\/mod_userdir.so/s/^#*//g' /etc/apache2/httpd.conf ; sed -i '' '/LoadModule php[0-9]_module libexec\/apache2\/libphp[0-9].so/s/^#*//g' /etc/apache2/httpd.conf ; sed -i '' '/Include \/private\/etc\/apache2\/extra\/httpd-userdir.conf/s/^#*//g' /etc/apache2/httpd.conf ; sed -i '' '/Include \/private\/etc\/apache2\/users\/\*.conf/s/^#*//g' /etc/apache2/extra/httpd-userdir.conf ; apachectl start"

† Ну, технически это одна строка, даже если она действительно очень длинная ...

Wowfunhappy
источник
0

Mountain Lion удаляет файл конфигурации, который дает веб-доступ к вашей директории пользователя. Файлы конфигурации находятся в /etc/apache2/users/. Отсутствует user.conf, где пользователь - ваше короткое имя пользователя.

Если вы не хотите возиться с командной строкой, вот вам Applescript, который вы можете запустить, чтобы создать файл конфигурации для вашего пользователя. Он запросит ваш пароль, потому что он должен создать файл в системном каталоге и требует повышенных привилегий.

В папке приложений или панели запуска откройте Other > Applescript Editor. Скопируйте приведенный ниже скрипт и вставьте его в текстовую область редактора Applescript. Затем нажмите кнопку « Выполнить» .

set userHome to (short user name of (system info))
set configFile to "/etc/apache2/users/" & userHome & ".conf"
set configFileContents to "<Directory \"/Users/" & userHome & "/Sites/\">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>"

do shell script "echo '" & configFileContents & "' > " & configFile with administrator privileges
do shell script "/usr/sbin/apachectl restart" with administrator privileges

Когда сценарий завершится, вы сможете получить доступ к своей веб-странице на уровне пользователя.

Indiv
источник