【发布时间】:2011-11-21 22:15:57
【问题描述】:
我正在尝试使用 open office 运行命令行文件转换。
openoffice pdf filename.doc 2>&1
当我以 root 身份在命令行中执行时,它工作正常并且文件被转换。但是,当我以 apache 用户的身份在 PHP 文件中传递上述命令时,它不会执行。
我尝试了所有三个 PHP 命令行执行:
$command_output=system($command_line,$rtnval);
$command_output=exec($command_line,$rtnval);
$command_output=passthru($command_line,$rtnval);
还有,
echo print_r($rtnval);
echo print_r($command_output);
$rtnval 返回 1 和 $command_output 1。我很困惑无法知道 linux (centos) 对上述命令的响应是什么。非常沮丧,因为当我尝试执行命令时无法知道系统响应。
我还添加了/etc/suders 允许 apache 运行 open office 命令的权限。
apache ALL: (ALL) NOPASSWD: /path/to/openoffice
该命令仍然没有以 apache 用户身份在 PHP 中执行。
作为 apache 用户,我缺少什么让 PHP 不执行此命令?
【问题讨论】:
-
你以Apache用户的身份在命令行上试过了吗?
-
您尝试运行的命令是什么?您也可以使用“2> error.txt” 回显错误输出
-
你尝试过除“openoffice”之外的其他命令吗?我建议 su-ing 到 apache 并尝试运行该命令,以排除任何问题。
-
乔纳森,你能提供一个 su-ing for apache 的样本吗?谁能解释一下这个命令: // $wv_command_output = passthru("touch /root/temp.tmp | sudo /usr/bin/php -f /util/wvPDF.php");
标签: php system exec passthru sudoers