컴퓨터/PHP

PHP (3) - exec를 이용하여 파이썬을 연동하자

달서비 2023. 1. 3. 18:15

제가 졸업 연구에서 PHP를 사용한 이유가 파이썬으로 제작한 소스 코드를 연동하여야 합니다. 저같은 경우 AI관련한 부분은 파이썬을 사용하게 되어 유용하게 사용할수 있습니다. PHP에서는 다른 언어에 비하여 간단하게 콘솔을 실행시킬 수 있고 해당 결과들을 웹으로 표현할 수 있습니다. 

 

exec 함수

exec 함수는 외부 프로그램을 실행시키는 함수입니다. 정확하게는 PHP에서 터미널을 다루는 함수입니다. 해당 함수에다가 파이썬 명령어를 깔아서 실행할 수 있습니다.

<?PHP
	$result = exec("echo Hello World!");
	echo $result;
?>

위의 예제는 터미널을 이용하여 'Hello World' 를 출력합니다.  

이제 해당 명령어를 통하여 파이썬과 연동을 실행시켜보도록 하겠습니다.

 

파이썬과 연동하기

1. 기본적인 방법

#hello.py
for i in range(5):
    print(i, 'Hello World')

해당 소스코드는 예시로 제작하였습니다.

<?PHP
	$result = exec("python hello.py");
	echo $result;
?>
Hello World
Hello World
Hello World
Hello World
Hello World

exec 명령어에는 파이썬 파일을 실행시키는 명령어를 실행합니다. 만약에 안 되는 경우에는 권한(chmod) 및 python3 입력이 필요한 경우등 다양한 원인을 파악하여서 적용하면 됩니다. 

 

2. 매개변수 이용하는 방법

#inputHello.py
import sys

inputHello = sys.argv[1]

for i in range(5):
    print(i, inputHello)
<?PHP
	$input = 'Hello World too';
	$result = exec("python inputHello.py '$input'");
	echo $result;
?>

매개변수를 이용하여 다양하게 프로그램을 구성할 수 있습니다.

Hello World too
Hello World too
Hello World too
Hello World too
Hello World too

 

2-1. 매개변수를 불특정으로 여러 개 사용하는 경우

이 부분은 파이썬을 이용하여 불특정으로 여러 개 구현할 수 있습니다. 배열을 사용하는 등 예시에서 사용하면 좋습니다.

#someArg.py
import sys

i=1
for arg in sys.argv:
    print('매개변수(' + str(i) + '):', arg)
    i = i + 1
<?PHP
	$result = exec("python someArg.py 'Cat','Dog','Elephant'");
	echo $result;
?>

 

매개변수(1):Cat
매개변수(2):Dog
매개변수(3):Elephant