Проблема с exec () в PHP - PullRequest
2 голосов
/ 30 мая 2011

Что ж, у меня есть эта программа, которую мне нужно запустить с помощью обеих функций, однако она находится на моем декстопе (это Ubuntu 11.04).

Я переместил ее в / home / Username, но без кубиков.

Я запускаю

$blah = exec('sudo | echo mypassword | /home/server1/program commandhere', $test); 
var_dump($test); 
var_dump($blah); ?>

Вывод - ничто.

Мне сказали, что если я хочу запустить его через sudo, мне нужно добавить пользователя Apache, который является www-data длясписок sudoers, я добавил его, но опять не повезло.В основном, я пробовал МНОГО вещей, но он просто не работает.Почему?

РЕДАКТИРОВАТЬ: Если я вставлю это в терминал, он прекрасно работает, только не с exec, system или passtrhu.

Ответы [ 2 ]

2 голосов
/ 30 мая 2011

Используйте echo mypassword | sudo -S вместо.

Это также зависит от того, какой пользователь имеет sudo привилегии. Если вы хотите запустить это из процесса apache, вам нужно также предоставить привилегии apache user sudo.

Кроме того, просто чтобы уточнить, команда должна быть:

echo mypassword | sudo -S /home/server1/program commandhere
0 голосов
/ 30 мая 2011

Загляните в свой журнал безопасности. Не уверен, где это находится в Ubuntu, возможно / var / log / secure или / var / log / messages. Держу пари, что вы найдете там сообщение, похожее на sudo requires a TTY или sorry, you must have a TTY to run sudo, указывающее, что sudo настроено не работать без реальной интерактивной оболочки. То есть sudo не позволит вам использовать его в сценарии или вызывать из внешней программы.

Недавно я сам решал эту проблему, пытаясь связать сочетание клавиш Gnome с командой sudo.

Если это так, вам нужно закомментировать следующую строку в /etc/sudoers

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