2012-08-10 2 views
1

여기에 약간의 혼란이 있습니다.매개 변수를 사용하여 서버에서 실행 가능한 PHP 실행 코드

윈도우 서버 2008 R1 + IIS6 + PHP5.3.10

나는 작은 지역 MSSQL 데이터베이스에 연결 검색을 수행하고 변수에 결과를두고 PHP 스크립트가 있습니다. db에는 6 개의 열이 있지만 그 중 4 개의 열만 전달할 가치가 있습니다.

이 서버에는 콘솔 파이썬 프로그램 (2.7 버전)이 있습니다. 이 인수는 4 개의 인수 (대상 전자 메일 주소, 제목, 본문 및 키 (키는 64 개의 영숫자 문자열)입니다.)이 파이썬 프로그램은이 모든 것을 HTML 템플릿 (프로그램 자체에 정의되어 있음)에 넣고 전자 메일로 타겟.

OK - 이제 재미있는 부분이 있습니다. PHP 스크립트와 동일한 디렉토리에있는이 python 프로그램을 실행하고 네 개의 인수/매개 변수를 전달할 수 있습니까? 인수/매개 변수에 공백이있을 수 있습니다.

+1

'exec()'또는'shell_exec()'에 대해 살펴 보셨습니까? –

+0

이 예제를 보았습니다. exec ('nameofexecutable.exe para1 para2 para3'); 하지만이 프로그램을 사용하면 프로그램이 실행되지 않습니다. 비록 IIS가 (네트워크)를 사용하고 있지만 항목은 작업 관리자에 나타나지 않습니다 (보통 20 초 가까이 걸릴 것입니다 - 의도적으로 파이썬 프로그램의 일부분에서 대기를 만들었을 때) –

답변

1

파이썬 스크립트를 실행하려면 exec() 또는 shell_exec()을 사용하는 것이 좋습니다. 입력 내용을 살균하는데도 escapeshellarg()escapeshellcmd()을 적절하게 사용하십시오. 이것은 다음과 같이 보일 수 있습니다 :

물론 실행 파일을 실행하려면 적절한 권한이 필요합니다.

+0

Gotcha. 실제로, 양식/사용자 입력이 없습니다. 이 PHP 스크립트는 사용자가 HTML 전자 메일 메시지에서 ACCEPT 또는 DENY를 클릭 할 때 호출됩니다. 어느 버튼을 클릭하든 site.com/nameofphpscript.php?key=에 웹 브라우저가 시작됩니다. 그런 다음 PHP는 키가 db에 있는지 확인한 다음 정보가 필요하면 파이썬 프로그램에 내 보내어 회사 내부에서 이메일로 전송합니다. 아마 이것이 조금 더 안전하다고 생각합니다. –

+0

설치가 올바른 것으로 가정하면이 구문이 올바른 것입니까? exec ('nameofexecutable.exe para1 para2 para3'); ?? –

+0

@PatrickAlexson 다소 차이가 있습니다. 나는 나의 대답을 업데이트했다. 파일을 실행할 수있는 권한이 있어야하고 파일이 실행 가능해야합니다. –

1

콘솔에서 명령을 실행하고 출력의 마지막 줄을 반환합니다. 모든 출력을 원하면 선택적인 두 번째 인수는 그걸로.

그리고 Erty가 말했듯이 입력 내용을 살균합니다. 사용자 제공 데이터를 직접 명령 행에 전달하지 마십시오.

+0

그냥 입력을 잊지 마세요! –

+0

감사합니다! 둘 다 대답 할 수 있으면 표시 할 것이지만 둘 다 도움이 될 수는 없습니다. –

관련 문제