Html运行系统命令

时间:2016-12-22 13:09:12

标签: linux php html5

我正在尝试运行此命令在我的覆盆子pi中创建一个文件夹,但它不起作用。 我不擅长PHP或HTML。我用谷歌搜索,我无法解决,所以发布在这里。 如果重复并且存在解决方案。请给我链接。 TIA 代码:

    <html>
<head>
<?php 
if (isset($_POST['TestA']))
{
exec('sudo mkdir /www/test');
}
if (isset($_POST['TestB']))
{
shell_exec('sudo mkdir /www/test1');
}

?>

  <title></title>
</head>
<body>
<form method="post">
  <table
 style="width: 75%; text-align: left; margin-left: auto; margin-right: auto;"
 border="0" cellpadding="2" cellspacing="2">
    <tbody>
      <tr>
        <td style="text-align: center;">Test case 1</td>
        <td style="text-align: center;">Test case 2</td>
  </tr>
  <tr>
    <td style="text-align: center;"><button name="TestA">test 2</button></td>
    <td style="text-align: center;"><button name="TestB">test 2</button></td>
  </tr>

</tbody>
  </table>
</form>
</body>
</html>

2 个答案:

答案 0 :(得分:3)

您是否注意到您尝试使用sudo运行命令,这意味着用户 www-data 必须包含在/ etc / sudoers文件中。

我已经尝试过你的代码了,如果我删除'sudo'并且我在/ www目录中给予权限,它就有效。

我认为您需要在sudoers文件中配置用户。

我的sudoers文件的一个例子:

#WWW-DATA
User_Alias WEBUSER = www-data
Cmnd_Alias CMDCOMMAND = /usr/sbin/asterisk, /sbin/iptables
WEBUSER ALL = NOPASSWD:CMDCOMMAND

#Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

您需要使用您的网络服务器将以root身份运行的命令替换CMDCOMMAND。在这种情况下mkdir

请记住,您需要转到 / etc / 目录并使用visudo -f sudoers正确编辑sudoers文件。

sudoers Here

P.S:如果您想测试您的网络服务器是否可以运行命令,您可以:

 su - www-data

它将成为sh控制台。

您可以在添加代码之前运行命令。

答案 1 :(得分:0)

您可以使用PHP创建目录,而无需调用shell。 PHP有自己的mkdir函数。

替换此行:

exec('sudo mkdir /www/test');

用这个:

mkdir("/www/test1", 0700);

并对第二个mkdir命令执行相同操作。

第一个参数是创建第二个的目录是模式(权限)。

如果你真的想在 / www 中创建这个目录(请参阅下面的安全说明),你需要编辑www-data用户的sudoers文件,如Ivan&#39; s中所述。回答或创建目录并更改所有者。您可以使用以下内容创建 / www 目录:

sudo mkdir /www

并使用以下内容更改所有权:

chown www-data:www-data /www

注意:提供www-data sudo权限会产生安全漏洞。您可能应该在/ var / www / html /目录中创建所需的目录,其中权限不是问题,并且不需要sudo。如果您不希望从Web访问这些目录,我建议在/ var / www中创建它们并更改所有者。