3

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); 
4

4 に答える 4

2

sudoersをALLALL=(ALL):NOPASSWD ALL(非常に安全ではありませんが、確実に機能するものを見つけるため)に変更しました。

それから私はしました

sudo -u myusername /path/to/script.sh

ここで、script.shにはexport VAR = value export VAR=valueがあります

必要なすべての環境変数について(適切にpacmdを実行できるユーザーからprintenvを実行して、必要なものを確認できます。おそらく、優れたHOMEとXAUTHORITYです)。

それが役立つことを願っています

于 2011-11-30T03:03:05.567 に答える
1

ほとんどの場合、phpスクリプトはApacheによって実行されます。スクリプトの場合は、Apacheユーザーがこのコマンドを実行するための十分な権限を持っていない可能性があります。最初にそれを確認してください。CLIスクリプトとして実行する場合は、PHPユーザーがスクリプトを実行できるかどうかを確認します。

于 2011-06-24T13:41:25.417 に答える
1

コマンドの最後で「>file.txt2>&1」を試してみてください。出力を別のファイルにリダイレクトします。

$command = "cmd command > outputs.txt 2>&1";
shell_execute($command);

最終的には次のようなファイルになります。

b'cmd command output contents\r\n'
于 2019-06-06T03:31:27.870 に答える
0

多分これが理由です

システムを使用してみてください

于 2011-06-24T13:33:48.360 に答える