2016-12-21 21 views
0

私はtmuxセッションを作成し、php経由でいくつかの他のコマンドを実行しようとしています。php execコマンドは実行されません

私はウェブからスクリプトを実行するとコマンドを実行しませんが、 "php test.php"を使ってスクリプトを実行すると動作します。

私はcmdsをsudoとして実行し、www-dataのsudoパスをオフにしようとしました。しかし、コマンドは実行されません。

スクリプト:

$array_output = array(); 
$cmd = "sudo tmux new-session -s Server-17 -d ENTER 2>&1"; 
$output = shell_exec($cmd); 
array_push($array_output, $output); 
$cmd = "sudo tmux send -t Server-17 'cd /home/Minecraft/Servers/1/17/' ENTER 2>&1"; 
$output = shell_exec($cmd); 
array_push($array_output, $output); 
$cmd = "sudo tmux send -t Server-17 'chmod +x start_script.sh' ENTER 2>&1"; 
$output = shell_exec($cmd); 
array_push($array_output, $output); 
$cmd = "sudo tmux send -t Server-17 'sh start_script.sh' ENTER 2>&1"; 
$output = shell_exec($cmd); 
array_push($array_output, $output); 
var_dump($array_output); 

が出力:撮影

array (size=4) 
    0 => null 
    1 => string 'failed to connect to server 
' (length=28) 
    2 => string 'failed to connect to server 
' (length=28) 
    3 => string 'failed to connect to server 
' (length=28) 
+2

ユーザーが実行する権限を持っていますか?アクセスを許可する必要があるのは、おそらくApacheユーザーです。 – Michael

+0

これは、私がアクセス権を持っているので、www-データのユーザがパスワードなしでsudoを使うためのアクセスを受けています。 –

答えて

0

から:How to make a system call remotely?

Apacheのユーザーwww-datasudoを使用して特定のアプリケーションを実行するための権限を付与する必要があります。

  1. コマンドsudo visudoを実行します。実際には、etc/sudoersのファイルを編集したいのですが、これを行うには、端末にsudo visudoを使用して、sudoersのファイルを複製して編集します。ファイルの終わりに
  2. 、以下の例を追加します。私たちは再起動smokepingのためのコマンドを使用して、別のアクション用のコマンドをマウントしたい-if、

www-data ALL=NOPASSWD: /etc/init.d/smokeping/restart, /bin/mount

(これはあなたが望むことを想定していますスーパーユーザー (root)権限を使用してrestartmountコマンドを実行する。)

をしかし、あなたは スーパーユーザー権限を使用してすべてのアプリケーションを実行したい場合は、トンを追加彼は上記のものの代わりに従っています。あなたはそれをしたくないかもしれません。ALLコマンドではなく、非常に危険です。編集後sudoersのは、私たちがそうsudoersファイルに書き込むために一時ファイル(visudoを)を保存して終了sudoersの一時ファイルを編集visudoことで(ファイル

www-data ALL=NOPASSWD: ALL 

3. 。(wq!

4 .Thatそれは、今お使いのxxx.phpスクリプト内で次のようにexec()を使用します。キープは、PHPスクリプト内のコマンドの使用前にsudoを使用することを忘れないでください。

例: - あなたの問題でそう

exec ("sudo /etc/init.d/smokeping restart 2>&1"); 

、あなたは私が追加して、あなたが望むものとして、あなたのPHPスクリプトを変更するようstep no (2.)に使用するコマンドを追加します。

+0

sudo特権を持っていますが、それでも正しく実行されません。 –

0

shell_execを試してみてください。

あなたもsudoのアクセスを必要とすることができます。 sudo in php exec()

+0

試してみましたが、まだ正しく実行されていません –

関連する問題