shell exec возвращает пустую строку


Когда я выполняю свою команду на PHP с помощью shell_exec, она всегда возвращает пустую строку. Я попробовал shell_exec('ls -l');, и это работает. Я поместил команду в отдельный файл и все равно получил тот же результат.

$shellOutput = shell_exec("pacmd list-sinks | grep 'volume: 0:' | tail -1 | awk '{ print $3 }'");

//return execute status;
echo trim($shellOutput); 
Author: Tim Cooper, 2011-06-24

3 answers

Я изменил sudoers на ВСЕ ВСЕ = (ВСЕ): NOPASSWD ВСЕ (очень небезопасно, но просто чтобы найти что-то, что обязательно сработает),

Затем я сделал

Имя пользователя Sudo -u/path/to/script.sh

Где script.sh имеет значение экспорта VAR=значение экспорта VAR=значение

Для всех необходимых переменных среды (вы можете сделать printenv от пользователя, который может правильно настроить pacmd, чтобы увидеть, что вам нужно. вероятно, хороший ДОМ и, возможно, АВТОРИТЕТ).

Надеюсь, это поможет

 1
Author: cyrusv, 2011-11-30 03:03:05

Большую часть времени php-скрипты запускаются Apache, если это относится к вашему сценарию, то у пользователя Apache может быть недостаточно разрешений для запуска этой команды. Сначала проверьте это. Если он запускается как скрипт командной строки, проверьте, может ли пользователь PHP запустить скрипт.

 1
Author: Kumar, 2011-06-24 13:41:25

Может быть, именно поэтому

Попробуйте использовать систему

 0
Author: Kaiser, 2011-06-24 13:33:48