2016-06-01 1 views
1

중요한 문제가있어 해결책을 찾을 수 없습니다. 현재 웹 훅 (HTTP POST)을 트리거로 허용하는 PHP 스크립트가 있습니다. POST에 포함 된 변수에 따라 exec ('python 스크립트')가 실행되어 일부 변수가 반환됩니다. 그것은 잘 작동하는 명령 줄에서 실행할 때 잘 작동하지만 어떤 종류의 HTTP 요청에서 스크립트를 트리거 할 때 exec() 함수가 실행되지 않습니다. 그것은는 HTTP POST에 의해 triggerd하는 PHP 스크립트() 함수 exec를가 할 수없는 경우PHP webhook에서 shell_exec()를 호출하려면 어떻게해야합니까?

$command = shell_exec('python C:\\xampp\\cgi-bin\\SECpull.py'); 

$company_dump = print_r($command, TRUE); 
$fp = fopen('retvals.txt', 'w'); 
fwrite($fp, $company_dump); 
fclose($fp); 

, 그럼 내가 어떻게 이것에 대해 가야한다 : 여기에 영향을받는 코드의 부분은 무엇입니까?

+0

그것은 전적으로 가능하고, 코드 아무 문제가 없습니다 (즉, 별표를 가정하는 것은 오타입니다). 웹 서버를 실행하는 사용자에게 명령을 실행할 수있는 권한이없는 것 같습니다. 명령 줄에서 기본값 대신 해당 사용자로 스크립트를 실행하여 테스트 할 수 있습니다. 나는 창문에서 그것을하는 법을 모르지만 유닉스 시스템에서는'sudo -u apache php myscript.php' ('apache'가 웹 서버를 운영하는 경우) –

+0

별표는 그 줄을 내 스크립트에서 집중할 줄로 강조하십시오. 혼란을 없애기 위해 그 문제를 해결할 것입니다. – Samson

+0

이렇게 많은 것들이 잘못 될 수 있습니다. 오류가 무엇인지 알릴 수 있다면 더 유용 할 것입니다. shell_exec은 일을하는 안전한 방법이 아닙니다. 순수 PHP 솔루션이나 순수한 파이썬 솔루션을 왜 믹싱하지 않을까요? – middlestump

답변

0

문제 언급 Robbie Averill으로

, 당신은 권한 문제가 있고 웹 서버를 실행하는 데 사용되는 사용자에게 추가 사용 권한을 추가하여 문제를 해결할 수있는 대부분의 아마. 그러나 과 섞어 쓰는 것이 바람직하지 않다고 생각합니다. SECpull.py으로 다시 쓸 수 없다면 의 모든 것을 더 잘 수행하십시오.

여기에 Flask을 사용하시기 바랍니다.

샘플

# server.py 
from flask import Flask 
app = Flask(__name__) 

# Setup custom route here 
@app.route("/") 
def index(): 
    # Add SECpull.py logic here. 
    return "Welcome To Python Server!" 

if __name__ == "__main__": 
    app.run() 

설정

$ pip install Flask 
$ python server.py 

* Running on http://localhost:5000/ 
관련 문제