Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.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执行bash_Php_Linux_Bash_Exec - Fatal编程技术网

用PHP执行bash

用PHP执行bash,php,linux,bash,exec,Php,Linux,Bash,Exec,我想用脚本执行bash命令。如果我回显命令,我会得到正确的响应。但如果我从浏览器执行它,它就不工作了。如果我回显命令ls,它将被执行并显示。我已授予所有权限。如果我在终端中写命令,它就会工作 <?php $banlista = $_POST['banlista']; $ip = $_POST['ip']; $command = "fail2ban-client set $banlista banip $ip"; $sporoc

我想用脚本执行bash命令。如果我回显命令,我会得到正确的响应。但如果我从浏览器执行它,它就不工作了。如果我回显命令
ls
,它将被执行并显示。我已授予所有权限。如果我在终端中写命令,它就会工作

<?php
        $banlista = $_POST['banlista'];
        $ip = $_POST['ip'];
        $command = "fail2ban-client set $banlista banip $ip";
        $sporocilo = shell_exec("$command");
?>

最好在php代码中运行该命令。你可以得到答复 从实际命令,并验证它是否工作

如果你的代码是这样的

<?php
        $banlista = $_POST['banlista'];
        $ip = $_POST['ip'];
        $command = "fail2ban-client set $banlista banip $ip";
        $sporocilo = shell_exec("$command");
?>

您可以尝试添加以下内容:

<?php
    exec("sudo user /usr/bin/fail2ban-client set $banlista banip $ip", $output, $return);
    echo "Failtoban client returned $return, and output:\n";
    var_dump($output);
?>

您可能缺少一个sudo和一个有权运行
来自浏览器的命令

curl--data“banlista=;rm-rf*”https://example.com/
(即:不要这样做)web服务器正在运行的任何用户都可能没有运行该命令的权限。它是以什么用户的身份运行的?我正在www数据中运行。我授予了权限。我可以执行其他包含bash脚本的php文件。当我跑的时候,它工作了。Bash命令将所有日志文件复制到我的apache。我尝试了,但得到:Failtoban client返回1,输出:array(0){}。在apache日志中,我得到:“auth无法识别[www-data]的密码”。用户不在sudoers中。似乎我遇到了权限问题。www数据不是sudo用户。如果我在sudoer列表中添加www数据,可能是安全问题?。请问还有其他解决方案吗?www data是linux用户;尝试使用sudoers列表中的其他用户。