Назад | Перейти на главную страницу

Проблемы с перезапуском apache через PHP (даже с sudo)

В рамках процесса регистрации на нашем сайте директивы VirtualHost создаются и добавляются в файл конфигурации через PHP, после создания каждого VirtualHost apache корректно перезапускается, чтобы новый сайт начал работать. Пользователь PHP, работающий под (www), получил разрешение на перезапуск apache в / etc / sudoer, а затем скрипт php с именем exec ('/ usr / local / bin / sudo / usr / local / sbin / apachectl graceful');

Это прекрасно работает. Однако мы находимся в процессе перехода на новый сервер, и я не могу заставить его работать в новой настройке.

Я добавил следующую строку в / etc / sudoers

apache ALL= NOPASSWD: /usr/sbin/apachectl graceful

а затем наш PHP-скрипт вызывает:

exec('/usr/bin/sudo /usr/sbin/apachectl graceful');

Если я включу доступ к оболочке для пользователя apache и входа в систему, я могу отлично запустить sudo / usr / sbin / apachectl graceful, просто когда мы вызываем его из PHP, он не работает.

Есть ли у кого-нибудь идеи? Спасибо.

На нашем старом сервере FreeBSD мы использовали Apache 1.3.x и PHP 4.4.

Наш новый сервер - CentOS 5.4 с Apache 2.2.x и PHP 5.3.2.

В файле sudoers (используйте visudo) под существующей строкой значений по умолчанию добавьте:

defaults:www !requiretty

На самом деле, вы уверены, что он работает от имени пользователя www? По умолчанию для CentOS используется "apache". Небольшой сценарий, который стоит попробовать:

<?php print system("whoami");?>

Если это не «www», просто замените бит «www» в sudoers выше.

Можете попробовать с shell_exec?