PHP - Exec выпуск - PullRequest
       3

PHP - Exec выпуск

1 голос
/ 25 июля 2011

Я настраиваю новый сервер и, конечно, я не документировал каждое изменение, внесенное в последний, но я получаю.

У меня странная проблема, я пытаюсьсделать простой вызов в php:

exec('service httpd reload');

И он ничего не делает.Я могу выполнить другие команды, такие как tar, я проверил php.ini на наличие disabled_functions, и он пуст.Имя пользователя, которое php использует для создания файлов / папок, также называется «apache».

Кто-нибудь знает какие-либо другие области, которые я могу проверить?Это свежая установка php 5.2.x, так что я уверен, что в apache есть настройка безопасности или что-то, блокирующее это.

Ответы [ 2 ]

1 голос
/ 25 июля 2011

Вы не можете перезапустить Apache как обычный пользователь, но вы не должны никогда оставлять свой пароль root записанным в файл.Если вам действительно нужно запустить эту команду из php, есть альтернативный метод.

Вы можете разрешить определенным командам запускать определенные команды от имени пользователя root без указания пароля.Для этого вы должны отредактировать файл /etc/sudoers с помощью visudo и добавить тег NOPASSWD к команде, которую вы хотите запустить.Вот пример со страницы руководства:

ray    rushmore = NOPASSWD: /bin/kill, /bin/ls, /usr/bin/lprm

Это позволит пользователю ray запускать / bin / kill, / bin / ls и / usr / bin / lprm в качестве пользователя root на машине rushmore безудостоверяющий себя.

1 голос
/ 25 июля 2011

Что ж, ваш apache, скорее всего, работает под учетной записью обычного пользователя (www-data или apache - это зависит от вашего дистрибутива), но чтобы перезапустить apache (или любую другую службу), вы должны быть корень .

Вы можете использовать sudo для повышения своих привилегий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...