如何在php中执行脚本

时间:2016-08-18 11:44:48

标签: php linux sh

我有一个插入我的usb端口的高架控制器(某些机器人的魔棒)。 我正在尝试在linux上创建一个Web服务器,允许用户向机器人发送预加载的代码(因此没有人输入任何内容)。我已将命令嵌入到我试图在php文件中执行的脚本文件中。当在Web服务器上按下按钮时,将运行在php中执行脚本文件的代码。但是,当我按下按钮时没有任何反应。代码不会发送到控制器,也不会给出错误。 我可以在命令行中运行脚本没有问题。但是当我尝试执行它时,从Web服务器运行它,没有任何反应。有没有办法解决这个问题? 这就是php文件中的内容

<html>
<body>
<h1><font face="verdana" color="green">SwarmArena</font></h1>
<hr>
<form action = "<?php $_PHP_SELF ?>" method = "POST">
Name: <input type ="text" name = "name"/>. ; <br>
Age: <input type ="text" name="age"/>. ; <br>

New Code: <textarea cols=40 rows=10 name="Newcode">Default text</textar$
<input type = "submit" name="enter"  value="Enter" />
<input type = "submit" name="insert" value="insert" />
<input type = "submit" name="select" value="select" />
<input type = "submit" name="sleep"  value="sleep" />
<input type = "submit" name="reset" value="reset" />
</form>
</body>
</html>

<?php

if(isset($_POST['sleep'])){
$out = shell_exec('./sleep.sh');
echo "$out";
}
?>

这就是sleep.sh中的内容

#!/bin/sh

 cd kilocmd && ./kcmd -s /dev/ttyUSB0 -c sleep 
 echo "done";

谢谢

2 个答案:

答案 0 :(得分:3)

我不知道你是怎么做到这一点的。但是点击它应该提交给php页面的按钮,该页面将使用exec and shell_exec php命令运行shell脚本。

更多关于这几个可能性可能导致像

这样的问题
 - exec and shell_exec are disabled in php.ini
 - The path to the executable is wrong. If the script is in the same
   directory as the php file, try exec(dirname(__FILE__) .
   '/myscript.sh');

答案 1 :(得分:0)

假设您正在从PHP脚本中正确执行命令,那么查看权限问题可能会很有用。

登录运行Web服务器的用户,然后尝试从那里手动执行命令。我个人让我的网络服务器在名为apache的用户下运行。

要查看当前用户在命令行中运行whoami

更改用户运行su - newuserhere

如果这样做,或者您在root下运行网络服务器,那么您很可能会排除任何权限问题。