我想建立一个基于php的站点,该站点在我的Ubuntu服务器上(自动)执行一些命令
我要做的第一件事是转到文件(sudoers)并添加用户www-data,以便我可以以root权限执行php命令!
# running the web apps with root power!!! www-data ALL=(ALL) NOPASSWD: ALL
然后我的PHP代码是
<?php $command = "cat /etc/passwd | cut -d\":\" -f1"; echo 'running the command: <b>'.$command."</b><br />"; echo exec($command); ?>
它仅返回一个用户(最后一个用户)!如何使其返回所有用户?
谢谢
从exec的PHP手册中:
返回值 命令结果的最后一行。如果您需要执行命令并直接将命令中的所有数据传回而不会受到任何干扰,请使用passthru()函数。要获取已执行命令的输出,请确保设置并使用输出参数。
返回值
命令结果的最后一行。如果您需要执行命令并直接将命令中的所有数据传回而不会受到任何干扰,请使用passthru()函数。要获取已执行命令的输出,请确保设置并使用输出参数。
因此,您必须执行以下操作:
<?php $output = array(); $command = "cat /etc/passwd | cut -d\":\" -f1"; echo 'running the command: <b>'.$command."</b><br />"; exec($command, &$output); echo implode("<br />\n", $output); ?>