Почему запуск “apachectl -k start” не работает, но “sudo apachectl -k start” работает?

StackOverflow https://stackoverflow.com/questions/904606

  •  05-09-2019
  •  | 
  •  

Вопрос

Я работаю над своей OS X с установкой Apache по умолчанию.По какой-то причине, когда я запускаю команду "apachectl" без "sudo", я получаю "нет доступных прослушивающих сокетов / невозможно открыть журналы". Я предполагаю, что это разрешительная вещь, так что кто-нибудь может мне помочь?Я использую Apache 2.2.

Также, побочный вопрос, где файл скрипта Apache, который в основном является "exe", который выполняет Linux?Я пытаюсь интегрировать свой сервер с Aptana Studio, и для этого требуется путь к установке Apache.Я знаю, что в Windows это было бы "C:\path o\httpd.exe", но я не знаю, как это работает в Linux.

Это было полезно?

Решение

Прослушивает ли ваш сервер порт 80?(Обычно) только root разрешено открывать порты ниже 1024.Отсюда вытекает необходимость в sudo.

Как ты может видеть, многие люди задаются вопросом, как обойти это.Одним из возможных решений является выполнение переадресации портов на вашем маршрутизаторе.(Здесь я предполагаю, что вы находитесь за маршрутизатором ...).Затем входящие соединения по порту 80 могут быть перенаправлены, например, напорт 8080.Таким образом, только локально нужно подключиться к порту 8080.(Могут быть и более элегантные решения...кто-нибудь другой опубликует их.)

Другие советы

Я думаю, что в целом (как в OS X, так и в Linux - я не уверен, на какой из них вы ссылаетесь) двоичный файл httpd находится по адресу:/usr/sbin/httpd

Если вам нужно иметь возможность перезапустить Apache, и вы не можете сделать это от имени root (по какой-либо причине ..), то вам, возможно, придется довольствоваться не "хорошо известным" портом.

попробуй это

(с php) $a = shell_exec('перезапуск sudo -u root -S /etc/init.d/apache2 < /home/$user/файл пароля');

пароль должен храниться в файле паролей

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top