php执行sh文件

php执行sh文件,php,linux,ssh,arguments,shell-exec,Php,Linux,Ssh,Arguments,Shell Exec,我正试图通过带有参数的PHP启动一个sh文件,但是我根本无法实现这一点: <?php $ip = $_GET['ip']; $port = $_GET['port']; echo shell_exec('sh var/www/html/Grant73565/Grant.sh $ip $port')or die("bash didn't work"); echo('Sent!'); ?> 通过ssh手动运行该文件效果良好,如: ./Grant.sh 127.0.0.1 80 然

我正试图通过带有参数的PHP启动一个sh文件,但是我根本无法实现这一点:

<?php
$ip = $_GET['ip'];
$port = $_GET['port'];

echo shell_exec('sh var/www/html/Grant73565/Grant.sh $ip $port')or die("bash didn't work");
echo('Sent!');
?>

通过ssh手动运行该文件效果良好,如:

./Grant.sh 127.0.0.1 80

然而在php中,它只是echo的“Bash不工作”


据我所知,这与参数无关,因为它甚至不能在没有参数的情况下启动文件。

如果要包含变量,则需要使用双引号

echo shell_exec("sh var/www/html/Grant73565/Grant.sh $ip $port") or die("bash didn't work");
使用当前代码,任何人都可以更改http查询并在服务器上执行任何操作。这是一个重大的安全漏洞


解决方案是验证输入。端口将始终是数字的,因此很简单。您可以使用正则表达式验证IP地址。

请勿执行此操作。您正在打开服务器,使其完全处于远程危害状态。考虑<代码>示例.COM?rm-rf/。享受你的服务器被彻底摧毁我明白安全风险,一切都是IP锁定的。我以后再做。我仍然收到“bash不工作”的代码。你确定路径正确吗?您是否尝试打印出命令并通过shell运行它?是的,执行find/-name Grant.sh返回:/var/www/html/Grant73565/Grant.shSo。。是否在php命令的开头包含正斜杠?否则,您将尝试执行与脚本路径相关的命令。