2016-08-18 6 views
0

내 USB 포트에 오버 헤드 컨트롤러 (일부 로봇의 마술 지팡이 종류)가 연결되어 있습니다. 사용자가 로봇에 미리로드 된 코드 (아무도 아무 것도 입력하지 않도록)를 보낼 수있는 Linux 웹 서버를 만들려고합니다. PHP 파일에서 실행하려고하는 스크립트 파일에 명령을 포함 시켰습니다. php에서 스크립트 파일을 실행하는 코드 비트는 웹 서버에서 버튼을 누르면 실행됩니다. 그러나 버튼을 누르면 아무 일도 일어나지 않습니다. 코드가 컨트롤러로 전송되지 않고 오류가 표시되지 않습니다. 문제없이 명령 줄에서 스크립트를 실행할 수 있습니다. 그러나 웹 서버에서 실행되도록 실행하려고하면 아무 일도 일어나지 않습니다. 이 문제를 해결할 수있는 방법이 있습니까? 이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"; 

감사

+0

같은 문제가 발생할 수 있습니다? –

+0

코드를 실행하는 방식으로 표시 할 수 있습니까? – Cagy79

+1

당신이 지금까지 건설 한 것을보기 좋게해야합니다. 그래서 우리가 당신을 도울 수 있습니다. –

답변

0

당신이 PHP 스크립트에서 제대로 명령을 실행하는 가정 무엇 인 PHP 파일에 무엇, 그것은있을 수 있습니다 권한 문제를 조사하는 데 유용합니다.

웹 서버가 실행중인 사용자로 로그인하고 거기에서 수동으로 명령을 실행 해보십시오. 개인적으로 apache이라는 사용자로 웹 서버를 실행하고 있습니다.

현재 사용자를 보려면 명령 행에서 whoami을 실행하십시오.

사용자를 변경하려면 su - newuserhere.

이 방법을 사용하거나 웹 서버를 root에서 실행하는 경우 권한 문제를 제외 할 수 있습니다.

+0

나는 루트 아래에서 웹 서버를 실행 중이다. –

3

나는이 일을 어떻게하는지 알지 못합니다. 그러나 버튼을 onclick하면 exec and shell_exec PHP 명령을 사용하여 쉘 스크립트를 실행할 PHP 페이지에 제출해야합니다. 그 몇 가지 가능성 이상

더 어떻게 웹 서버에서 실행하려고하는

- 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'); 
+0

_FILE_을 (를) 말하면 php 파일의 이름을 의미합니까? –

+0

아니요, 파일 이름이 아닙니다. php inbuilt 마법 상수 부모 디렉토리의 경로를 반환합니다.이 "dirname (__ FILE__)"을 사용하지 않아도됩니다. –

+0

고맙지 만 작동하지 않습니다. shell_ exec를 실행하면 터미널을 사용하여 얻을 것으로 예상되는 출력이 나오지만 USB 포트에 연결하지 않는 것처럼 보입니다. –

관련 문제