LINUX.ORG.RU

shell_exec

 , , ,


1

1

Здравствуйте уважаемые жители форума.
у меня такая ситуация:
сайт на nginx+apache.
сайт работает через пользователь mastwap, а не через www-data (сделал по соображением безопасности)
а к пользователю mastwap присвоен статус суперадмина через sudoers.

необходимо выполнить expect скрипт через php.
пробовал
<?php shell_exec(«sudo expect ps.exp»); ?>
не получается , но если попробовать через консоль ssh, то все работает удачно!

Что же можно сделать, чтобы все это работало через php скрипт? заранее спасибо, буду ждать ответа.



Последнее исправление: ilhomparisi (всего исправлений: 1)

не получается

Значит, что-то не работает.

сайт работает через пользователь mastwap, а не через www-data (сделал по соображением безопасности) а к пользователю mastwap присвоен статус суперадмина через sudoers

(сделал по соображением безопасности)

Лол.

deadNightTiger ★★★★★
()
Ответ на: комментарий от ilhomparisi

а что можешь порекомендовать ?

Для безопасности? Из PHP от непривелегированного юзера ставить задачу в очередь (или хотя бы скидывать файл-флаг на диск), а уже рутовым демоном обрабатывать задачу.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Тоже вариант, но сейчас безопасность не играет столь важную роль, потом могу что нибудь придумать.
вопрос в том , можно ли запустить без каких либо демонов на прямую? почему не работает через php, в чем может быть причина?
через php с функцией exec с легкостью можно включить/отключить приложение , который без root никак нельзя.
но когда речь идет скрипте , то почему-то пустота.

ilhomparisi
() автор топика

Проверь что у тебя в скрипте все переменные указаны а не подгружаются из окружения и что пути везде полные стоят. Прикрути логирование и посмотри где падает.

alozovskoy ★★★★★
()
Ответ на: комментарий от alozovskoy

Переменных там пока нет. путь к скрипту проверен.
Я не знаю как прикрутить логирование через shell_exec, буду рад если покажите на примере.

ilhomparisi
() автор топика
Ответ на: комментарий от ilhomparisi

Пути не к скрипту, а к тому что у тебя внутри скрипта запускается (у тебя из консоли он запускается с учетом всяких ~/.bash_properties\~/.bashrc, а при запуске через php что-то модет потеряться). Логировние нужно внутри скрипта делать, не в php, но это сложный вариант на тот случай, если больше ничего не помогло.

alozovskoy ★★★★★
()
Ответ на: комментарий от kiotoze

Попробовал, не помогло. а может быть к скрипту надо поставить определенный chmod (права) ?
или может быть надо пользоваться с другими консольными функциями php ?
что думаете на счет этого?

ilhomparisi
() автор топика
Ответ на: комментарий от alozovskoy

На примере покажи пожалуйста. вот к примеру я теперь запускаю вот так
shell_exec(«sudo /usr/bin/expect /home/mastwap/public_html/server/ps.exp»);
а что еще надо добавлять ?

ilhomparisi
() автор топика
Ответ на: комментарий от ilhomparisi

Попробуй все тоже самое, но через http://php.net/system
И сделай вывод ошибок, что именно выдает
sudo тоже нужно указать абсолютный путь - /usr/bin/sudo

kiotoze ★★★★
()
Последнее исправление: kiotoze (всего исправлений: 1)
Ответ на: комментарий от kiotoze

Вернул на nginx+php-fpm и все заработало.
я изначально ошибся - apache почему-то не принимало sudo запросы.
не знаю почему

ilhomparisi
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.