본문으로 바로가기

PHP에서 Python 파일 실행하기

category Backend/PHP 2020. 12. 30. 11:06
728x90
반응형

php에서 외부 프로그램을 실행시킬 일이 없을 것 같았는데 그 일이 생겼다.
그래서 구글링한 결과 간단하게 사용할 수 있는 것을 발견하고 소스를 추가해봤다.

EXEC Function

php manual은 다음을 참고하자 PHP: exec - Manual

exec("python test.py ".$변수." ".$변수 ... n)

실행 명령어 맨 끝에 한 칸을 띄우면서 파라미터를 추가할 수 있다.

받는 쪽에서는 다음과 같이 처리한다.

# -*- coding: utf-8 -*-

import sys
import io

# 한글처리
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')

var1 = sys.argv[1]
var2 = sys.argv[2]

...

n

sys.argv[1] 형식으로 시스템 변수를 받아온다. 인덱스가 1부터 시작한다.


CASE 1

exec("python test.py")

위 소스는 test.phptest.py가 같은 경로에 있고 로컬(Window, Linux)에서 실행했을 때 사용


CASE 2

exec("cd /home/test/ && python test.py")

위 소스는 linux에서 /home/test/ 라는 경로로 이동한 뒤 && 을 이용하여 이어서 test.py 파일을 실행할 때 사용


CASE 3

exec("C:\Users\User\AppData\Local\Programs\Python\Python35\python.exe C:\APM_Setup\htdocs\test.py")

위 소스는 WindowAPM을 설치하여 실행하는 때 사용

Full Path로 잡지 않으면 python이 실행되지 않음


위 케이스별로 실행해보며 안되는 경우에는 python의 full path를 써보고 파일경로도 full path로 작성해서 사용하길 바람

728x90
반응형

'Backend > PHP' 카테고리의 다른 글

PHPExcel  (0) 2020.11.05
XML to JSON (NOCDATA)  (0) 2020.09.21
MYSQL PASSWORD와 비밀번호 비교  (0) 2020.09.02
CURL SSL 무시 및 multipart form-data POST 요청  (0) 2020.07.31
금액을 한글로 변환  (0) 2020.07.10