Development/PHP

[PHP] 쉘 함수 exec()와 파라미터 전달

곽진돔 2022. 11. 17. 16:24

php에서 python을 실행하려면 exec function 을 사용한다.

exec(실행파일 .파라미터);

나는 파이썬 파일을 실행하기 위해 "설치된경로 실행할 파일명" 파라미터를 작성했다.

예시)

exec("C:/Users/user/AppData/Local/Programs/Python/Python37/python.exe C:/APM_Setup/htdocs/test.py ".$value);

 

여기서 전달하는 파라미터 값에 &가 있으면 잘려서 전달이 된다.

escapeshellarg() 함수를 사용하면 해결할 수 있다.

 

escapeshellarg() 는 문자열 주위에 작은 따옴표를 추가하고 기존 따옴표를 이스케이프하여 문자열을 쉘 함수에 직접 전달하고 하나의 안전한 인수로 처리하도록 하는 함수이다. 이 함수는 쉘 함수에 대한 인수를 이스케이프 하는데 사용해야 한다. (쉘 함수 : exec(), ststem(),백틱 연산자)

 

아래처럼 파라미터 값에 함수를 씌우면 된다.

exec("C:/Users/user/AppData/Local/Programs/Python/Python37/python.exe C:/APM_Setup/htdocs/test.py ".escapeshellarg($text));