2013-11-07 4 views
1

Итак, я нахожусь на моем Ubuntu Server и хочу выполнить следующую команду:PHP команды Линукса выполнить с помощью Exec()

su -c /path/to/command -s /bin/bash -l otheruser 

Когда я введите следующую команду в командной строке Linux, он прекрасно просит пароль для другого пользователя и выполняет команду.

Однако, когда я это сделать, как этот

exec("su -c /path/to/command -s /bin/bash -l otheruser"); 

он ничего не делает. Я еще не указал пароль для этого, но на самом деле он не возвращает ничего, что могло бы помочь мне решить эту проблему. Я установил разрешения для этой команды на 777 для целей тестирования.

Любые предложения?

ответ

4

Попробуйте это:

<?php 

$ret = exec("su -c /path/to/command -s /bin/bash -l otheruser", $out, $err); 

var_dump($ret); 
var_dump($out); 
var_dump($err); 

?> 

Дополнительная информация: http://us3.php.net/manual/en/function.exec.php

Кроме того, если вы ждете ехес команду запрашивала пароль для другого пользователя (как это было в командной строке Linux) - он не будет работать, команда exec не является интерактивной. Вам нужно будет передать пароль по команде inline.

+0

Он возвращает следующее: string (0) "" array (0) {} int (1) – Beeelze

+0

И как бы передать пароль по команде? – Beeelze

+0

Взгляните на этот ответ http://stackoverflow.com/a/4327123/2332336 – Latheesan

Смежные вопросы