所以,我在我的 ubuntu 服务器上,想执行以下命令:
su -c /path/to/command -s /bin/bash -l otheruser
当我在 linux 命令行中键入此命令时,它会完美地要求其他用户输入密码并执行命令。
但是,当我这样做时
exec("su -c /path/to/command -s /bin/bash -l otheruser");
它什么都不做。我当然还没有为它指定密码,但它并没有真正返回任何可以帮助我解决这个问题的东西。出于测试目的,我已将该命令的权限设置为 777。
有什么建议吗?
试试这个:
<?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
此外,如果您期望 exec 命令要求您提供其他用户的密码(就像在 linux 命令行中所做的那样) - 它不起作用,exec 命令不是交互式的。您需要在命令上以内联方式传递密码。