반응형
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.php
와 test.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")
위 소스는 Window
에 APM
을 설치하여 실행하는 때 사용
Full Path로 잡지 않으면 python이 실행되지 않음
위 케이스별로 실행해보며 안되는 경우에는 python의 full path를 써보고 파일경로도 full path로 작성해서 사용하길 바람
반응형
'Backend > PHP' 카테고리의 다른 글
codeigniter4 + mac + local settings (0) | 2024.07.18 |
---|---|
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 |