У меня есть проблема, при которой Apache не запускается после обновления до High Sierra 10.13.1. В журналах ошибок ничего не отображается, но при попытке apachectl start
ничего не происходит. Если я бегу, apachectl configtest
я получаю "Синтаксис ОК
Я использовал такие команды, как sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
безрезультатно. Апач не запустится. Я могу бежать, sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.httpd.plist
и это тоже не работает.
Я взглянул на список служб brew, и httpd отображается в списке вместе с другим процессом (mysql), но состояние httpd показывает желтый «запущен» вместо зеленого.
Я пробовал много разных вещей, и я обнаружил, что если я загляну в файл system.log, то найду com.apple.xpc.launchctl[1] (homebrew.mxcl.httpd24[11780]): Service exited with abnormal code:1
Если я запускаю apachectl start, команда, кажется, работает, но когда я запускаю команду stop, я получаю «httpd (без файла pid) не работает.
Я также получаю вывод com.; Apple.xpc.launchd [1] ( org.apache.httpd): Пожалуйста, переключитесь с OnDemand на KeepAlive.
Есть ли что-то в High Sierra, которое мешает работе Apache, когда он работает нормально в Sierra?
источник
brew services list' I receive a yellow indicator, I checked with all of the available users and ran
услуг brew, и все они показывают один и тот же индикатор. Что касается руководства по установке, Ansible был использован для настройки Apache. Это было сделано на 5 других MacBook, они все еще работают под управлением Sierra. У этого MacBook была проблема, и Appleapachectl start
). То же самое с... configtest
!httpd
формулу Homebrew , и теперь apache не отвечает. Когда я делаюbrew services list
, я также получаюstarted
для httpd в желтом, и когда я бегуsudo apachectl stop
, он говорит мне, чтоhttpd (pid 87?) not responding.
Ответы:
По моему мнению, вы использовали различные механизмы запуска / запуска httpd, выполнив слишком много команд, связанных с httpd.
При установленном apache-httpd homebrew и homebrew и PATH по умолчанию у вас есть шесть способов запустить httpd.
Apple Apache:
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
sudo /usr/sbin/apachectl start
Доморощенный апач:
sudo apachectl start
apachectl start
sudo brew services start httpd
brew services start httpd
Если вы скопировали файл homebrew.mxcl.httpd.plist вручную в ~ / Library / LaunchAgents / или / Library / LaunchDaemons /, у вас есть еще два варианта, чтобы начать его, загрузив их
(sudo) launchctl load ...
.Если вы не изменили конфигурационные файлы httpd или сценарии apachectl, ветвь Apple будет использовать файл httpd.conf от Apple в / var и DocumentRoot в папке / Library.
Ветвь доморощенного использует подпапки в / usr / local /.
Некоторые методы запуска не будут работать, если вы привязали порты httpd к портам ниже 1024!
Если вы используете
(sudo) brew services ...
для запуска httpd, вы должны использовать правильную(sudo) brew services list
команду для проверки статуса:Если вы запустите его как root, перечислите его с правами root:
sudo brew services start httpd
>sudo brew services list
или с пользователем privs:
brew services start httpd
>brew services list
.Чтобы решить вашу проблему, выгрузите httpd от Apple:
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
(sudo) brew services stop httpd
остановить любой httpd, запущенный apachectl:
Теперь - если вы хотите использовать httpd homebrew на привилегированных портах - введите:
Проверьте успешное начало с
sudo brew services list
.источник
apachectl stop
выводит,httpd (no pid file) not running
и когда я запускаю,sudo brew services httpd start
sudo brew services list
указывает apache2 (httpd)started
желтым цветом. Когда я пытаюсь получить доступ к какой-либо связанной веб-странице, я не могу. Мне интересно, изменило ли обновление до 10.13 что-то в apache, препятствуя его запуску.Относительно доморощенного httpd, одна проблема, с которой я недавно столкнулся, была старый оставшийся файл httpd.pid, который препятствовал запуску httpd. Симптом
apachectl start
сказал, что httpd уже запущен, но это не так.Потому что здесь был старый файл:
Решением было удалить этот pid-файл и затем запустить httpd.
источник
httpd
монитора активности. Это исправило это.brew services list
я получал желтый статус «запущен», что означало, что что-то не так с активным состоянием сервера. Удаление pid исправило это, и теперь список услуг теперь показывает активный статус в виде зеленого «запущен». Спасибо тебе за это!Я столкнулся с тем же после того, как я повысил до Высокой Сьерры ранее сегодня. Я обнаружил, что следующие файлы Apache были заменены новыми версиями. К счастью, для всех этих файлов в той же папке существовал предыдущий файл FILE ~. Я просто скопировал предыдущую версию обратно в исходную, перезапустил apache и все было хорошо.
В папке
/etc/apache2
:Пример:
источник
/etc/apache2/extra/
находится приблизительно 10 файлов с ~ предыдущим приложенным к ним, если все они будут изменены, или только те два, которые вы упомянули в/etc/apache2/extra/
папкеУ меня такая же проблема
Это означает, что httpd вышел ненормально.
Затем я вручную запустил httpd, чтобы увидеть, в чем проблема
Глядя на разрешения это было довольно ясно
Я думаю, что я запустил httpd как root, что вызвало эту проблему. Я удалил файлы и после
все было хорошо.
источник
Я столкнулся с этим недавно. Причина в том, что homebrew устанавливает apache2 / httpd в доступные для пользователя папки и запускается как пользователь (запустив команду: brew services start httpd).
Не работает как обычный пользователь означает, что httpd не может прослушивать привилегированные порты (1024 и ниже).
Таким образом, даже если httpd.conf настроен на прослушивание 80 и 443, httpd не может получать запросы через эти порты.
Особенность в том, что вы запускаете httpd командой: sudo apachectl start. Эта команда запускает httpd от имени пользователя root. Корневому пользователю разрешено прослушивать порты 80 и 443. Затем httpd отбрасывает привилегии, снова работая как пользователь _www.
Итак, короткий ответ - запустить homebrew httpd на портах 80, а 443 - запустить его с помощью: sudo apachectl start. Вы также можете запустить его с помощью: sudo brew services start httpd. Brew скажет вам, что он требует определенных папок для root, что, я полагаю, нормально, но не обязательно, так как запуск sudo apachectl не требует прав доступа к файлу и / или смены владельца.
источник
Я бы наоборот предложил, что HomeBrew всегда запускает httpd от sudo. Если вы выполните команду ps -aef | grep httpd, вы увидите, что она работает. Работа без sudo не приводит к выводу ps, что может создать неправильное впечатление, что httpd не работает.
Также я не уверен, что в обоих случаях загружены разные или одинаковые конфигурации. Я установил PHP и создал файл test.php с phpinfo в каталоге DocumentRoot. Если вы запускаете apache с помощью sudo, вы можете увидеть phpinfo с localhost / test.php при использовании brew services, запуск httpd выдаст вам ошибку, если DocumentRoot находится в области, где требуется root-доступ.
источник