2017-10-30 1 views
0

"/var/www/html"에있는 웹 사이트 (index.php)를 통해 LED를 켜고 끄고 싶습니다. 두 스크립트는 "/var/www/html/wspace/Server/"에 있습니다. 두 스크립트는 ssh로 실행할 때 완벽하게 작동하지만 PHP 파일을 통해 실행할 수는 없습니다. 내가 가진 PHP는 파이썬 스크립트를 실행합니다

exec("/usr/bin/python3.5 /wspace/Server/on.py"); 

가 (.. 내가 which python3.5와 파이썬 설치에 위치해 대답은 /usr/bin/python3.5했다)

: 내 index.php를에서

나는 온/off.py에 대해 다음 코드를 작성 뭘 잘못했는지 몰라. 그것은 그가 명령을 내리는가 아니면 sth을 바꿔야 만 하는가? 아파치에? 작동하도록 변경해야하는 것은 무엇입니까?

으로 추가 정보 파일의 소유자 및 권한 :

index.php pi:pi 777 
on.py pi:pi 777 
off.py pi:pi 777 
+0

'sudo'는 메시지를 표시 자격 증명 – Kisaragi

+0

을 실행하십시오 출력과 반환 값에 대한 매개 변수를 추가하고이를 검사하십시오 : exec ("...", $ output, $ r); var_dump ($ output, $ r)'; – sidyll

답변

1

그 파일은 아파치 사용자가 가능성이없는, 희망, sudo를 액세스 권한 않습니다 "www가 데이터". 또한 exec의 여러 단어가 이상하게 작동 할 수도 있습니다. 모르겠습니다. exec()는 bash를 실행하지 않을 수도 있으므로 "& &"과 같은 것은 작동하지 않습니다.

여기에 상대 경로 지정을 사용하여 첫 번째 파이썬 스크립트의 라인과 그 다음

exec("/var/www/html/wspace/Server/on.py") 

$chmod +x on.py 

#!/usr/bin/python3 

을 넣어 좋은 생각 하나 당신 때문에 돈없는 나는 확실히 지정할 수 있지만 작업 디렉토리가 무엇인지 알지 못한다.

여전히 작동하지 않으면 환경 변수가 문제가 될 수 있으며 "unknown environment : python3"줄에 뭔가 표시됩니다. 나는 여기서 꺼져 있을지도 모를 메모리에서 인용하고있다. 이 경우 PATH를 내보내는 bash 스크립트를 호출해야합니다. 당신은 상자에 로그온이 경우 문제가되지 않는 일반 사용자로 $ PATH 에코 후 bash는 스크립트가 될 수 있습니다

#!/bin/bash 
export PATH=$PATH:<the stuff from 'echo $PATH'> 
/var/www/html/wspace/Server/on.py 

이 위해에 실행 비트를 설정하는 것을 잊지 마세요 스크립트 중, chmod를 + X

마지막으로, PHP는 위의 bash는 스크립트를 부를 것이다 :

exec("<full path to bash script>") 

그것은 모든 가능성이 후드에 간부 인에 전달 된 인수가 bash는 인터프리터에서 실행되지 않습니다 것을 깨닫게하는 것이 중요합니다 위의 내용은 독립형 스크립트에서 수행해야 할 수도 있습니다.

0

나는 한동안 동일한 문제가있었습니다.

이 시나리오에서는 스크립트가 실행 파일과 관련성이있는 위치를 고려해야합니다. 지금은 슬래시가 있기 때문에 루트 디렉토리의 절대 경로를 살펴볼 것입니다. 이것을 제거하면 상대적으로 보이고 작동합니다.

또한 파이썬을 실행할 때 전체 경로를 포함해야한다는 것을 알았습니다. 이자형.g

exec('/usr/local/bin/python3 wspace/Server/on.py')

이 여전히 작동하지 않는 경우, 디렉토리를 변경 한 다음 파일을 실행하려고 : (내가 희망 신)

exec('cd wspace/Server && /usr/local/bin/python3 on.py')

+0

나는 당신의 제안을 시도했다. 작동하지 않습니다. 나는 index.php와 같은 디렉토리에서 또 다른 on.py 스크립트를 만들었지 만 이것이 작동하지 않았다. – AlwaysLearning

+0

python3에 대한 경로가 예제에서와 동일하다는 것을 확인 했습니까? – Ian

+0

예, 제가 사용하고있는 python3.5라는 것을 보았습니다. 그래서 python3과 python3.5로 테스트했지만 아직 작동하지 않습니다. – AlwaysLearning

관련 문제