如何从php脚本执行shell命令
我想创建一个php脚本来执行shell命令并返回其输出。服务器需要私钥。当我第一次决定对此进行测试时,我创建了以下内容:如何从php脚本执行shell命令,php,shell-exec,Php,Shell Exec,我想创建一个php脚本来执行shell命令并返回其输出。服务器需要私钥。当我第一次决定对此进行测试时,我创建了以下内容: <?php $command = "ls"; $output = shell_exec($command); echo "<pre>$output</pre>"; ?> 它给了我这个输出: 我猜我需要使用sudo。当然,这需要将pem文件放在服务器上的某个位置。假设我这样做,$command应该是什么?我应该使用shell\u exec(
<?php
$command = "ls";
$output = shell_exec($command);
echo "<pre>$output</pre>";
?>
它给了我这个输出:
我猜我需要使用
sudo
。当然,这需要将pem文件放在服务器上的某个位置。假设我这样做,$command
应该是什么?我应该使用shell\u exec()
、exec()
、system()
还是其他什么?您真正需要做的是将web服务器设置为以特定用户(例如“nobody”除外)的身份运行,或者为该用户授予您想要执行的操作的权限
另请参见:启动脚本所使用的php函数并不重要,缺少的是用户帐户的授权
使用sudo(通过
visudo
,预先配置web服务器用户在没有密码的情况下运行确切的命令,并在命令前面加上sudo
),或者设置一个setuid脚本在其自身上执行该命令。这就引出了一个问题:如何“将web服务器设置为以“nobody”以外的特定用户运行”@Kenneth Vogt,我怎么知道呢,您没有指定使用哪台服务器。如果您正在使用Apache,请检查用户
和组
配置指令。()如果您无法使其正常工作,那么可以询问ServerFault.com。虽然用户帐户必须经过授权也很重要,但这并不意味着PHP函数没有最佳选择。哪个是最好的?@Kenneth Vogtexec
,因为它不需要涉及shell并返回结果,或者passthru
,它直接输出结果,但需要对原始代码进行一些修改。
$command = "/etc/init.d/mycontrollerd status /etc/mycontrollerconfig";
You need root privileges to run this script