Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从php脚本执行shell命令_Php_Shell Exec - Fatal编程技术网

如何从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脚本来执行shell命令并返回其输出。服务器需要私钥。当我第一次决定对此进行测试时,我创建了以下内容:

<?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 Vogt
exec
,因为它不需要涉及shell并返回结果,或者
passthru
,它直接输出结果,但需要对原始代码进行一些修改。
$command = "/etc/init.d/mycontrollerd status /etc/mycontrollerconfig";
You need root privileges to run this script