[PHP]PHP에서 Python 스크립트 실행 방법: PHP와 Python의 연동

2025. 2. 26. 13:56PHP

반응형

 

 

PHP와 Python은 각기 다른 언어로, 웹 개발에서는 PHP가 서버 사이드 스크립팅에 자주 사용되고, Python은 데이터 처리, 머신러닝, 과학적 계산 등에서 강력한 기능을 제공합니다. 이 두 언어를 연동하여 PHP에서 Python 스크립트를 실행하는 방법에 대해 자세히 설명하겠습니다. PHP에서 Python 스크립트를 실행함으로써, Python의 강력한 라이브러리와 기능을 웹 애플리케이션에 통합할 수 있습니다.

 

1. PHP에서 Python 실행 개요

PHP와 Python을 연동하려면 PHP에서 외부 명령어를 실행하는 기능을 이용해야 합니다. PHP에서는 shell_exec(), exec(), passthru()와 같은 함수를 통해 외부 프로그램을 실행할 수 있습니다. 이를 통해 Python 스크립트를 실행하고, 그 결과를 PHP로 가져올 수 있습니다.

2. PHP에서 Python 스크립트 실행 준비

2.1. PHP와 Python 환경 확인

  • Python 설치: PHP에서 Python 스크립트를 실행하려면 시스템에 Python이 설치되어 있어야 합니다. 대부분의 Linux/Unix 시스템에서는 Python이 기본적으로 설치되어 있습니다. Python이 설치되어 있지 않다면, Python 공식 웹사이트에서 다운로드하여 설치합니다.
  • PHP 설치: PHP는 웹 서버와 함께 설치되어 있어야 합니다. Apache나 Nginx 같은 웹 서버에서 PHP를 실행할 수 있어야 하며, PHP의 exec() 또는 shell_exec() 함수를 사용할 수 있어야 합니다.
  • 퍼미션: PHP 스크립트에서 외부 명령어를 실행하려면 PHP의 설정 파일(php.ini)에서 exec()나 shell_exec() 함수가 허용되어 있어야 합니다. 만약 보안 설정이 엄격하다면 해당 함수가 비활성화되어 있을 수 있으니, 이를 활성화하려면 php.ini 파일에서 다음과 같은 설정을 확인해야 합니다.
disable_functions = none  ; exec(), shell_exec(), passthru() 등이 허용되도록 설정

 

3. PHP에서 Python 스크립트 실행하기

3.1. 기본적인 Python 스크립트 실행

Python 스크립트를 실행하려면 PHP에서 shell_exec() 또는 exec() 함수로 시스템 명령을 실행해야 합니다. 예를 들어, Python 스크립트 script.py를 실행하는 방법은 다음과 같습니다.

 

<?php
// Python 스크립트 실행
$output = shell_exec('python3 /path/to/your/script.py');
echo $output;
?>

 

  • **python3**는 Python 3 버전의 실행 명령입니다. 시스템에 설치된 Python 버전에 따라 python 또는 python3를 사용할 수 있습니다.
  • **/path/to/your/script.py**는 실행할 Python 스크립트의 경로입니다. 상대 경로나 절대 경로로 지정할 수 있습니다.

3.2. Python 스크립트에 인자 전달

Python 스크립트에 인자를 전달하려면 PHP에서 shell_exec() 함수를 사용할 때 명령어 뒤에 인자를 추가하면 됩니다. 예를 들어, Python 스크립트가 두 개의 인자를 받는다고 가정합니다:

# script.py
import sys

arg1 = sys.argv[1]
arg2 = sys.argv[2]

print(f"Argument 1: {arg1}, Argument 2: {arg2}")

 

이 경우 PHP에서 인자를 전달하는 방법은 다음과 같습니다.

 

<?php
$arg1 = "Hello";
$arg2 = "World";

// Python 스크립트 실행 시 인자 전달
$output = shell_exec("python3 /path/to/your/script.py $arg1 $arg2");
echo $output;
?>

4. Python 스크립트의 실행 결과 처리

PHP에서 실행한 Python 스크립트의 결과는 shell_exec() 또는 exec() 함수의 반환값으로 받게 됩니다. 이 값을 PHP에서 적절히 처리하여 출력하거나 다른 용도로 사용할 수 있습니다.

4.1. Python 스크립트에서 출력된 값을 PHP에서 출력하기

# script.py
print("Hello from Python!")
<?php
$output = shell_exec('python3 /path/to/your/script.py');
echo "Python Output: " . $output;
?>

 

이 코드는 Python 스크립트에서 출력된 "Hello from Python!"을 PHP에서 받아서 출력하는 예제입니다.

4.2. JSON 데이터 처리하기

Python 스크립트에서 JSON 형식으로 데이터를 반환하고, PHP에서 이를 처리하는 방법입니다. Python 스크립트에서 JSON을 반환하는 코드 예시입니다.

# script.py
import json

data = {"name": "John", "age": 30}
print(json.dumps(data))

PHP에서 JSON 데이터를 받아 처리하는 예시는 다음과 같습니다.

<?php
$output = shell_exec('python3 /path/to/your/script.py');
$data = json_decode($output, true); // JSON을 배열로 변환

echo "Name: " . $data['name'] . "<br>";
echo "Age: " . $data['age'];
?>

PHP에서는 json_decode() 함수를 사용하여 Python에서 반환한 JSON 데이터를 PHP 배열로 변환하고, 이를 활용할 수 있습니다.

 

5. 보안과 퍼포먼스 고려 사항

5.1. 보안

PHP에서 외부 명령어를 실행하는 것은 보안상 위험할 수 있습니다. 사용자가 입력한 값을 직접 실행하는 경우, 악의적인 코드가 실행될 수 있습니다. 이를 방지하려면 사용자 입력을 검증하고, 입력값을 적절히 처리해야 합니다.

  • 입력값 검증: 사용자가 입력하는 데이터를 검증하여 악성 코드를 차단합니다.
  • 안전한 경로 사용: 명령어를 실행할 때는 경로를 절대 경로로 지정하거나, 안전한 디렉토리 내에서만 명령어를 실행해야 합니다.

5.2. 퍼포먼스

Python 스크립트를 외부 명령어로 실행하는 방식은 I/O 작업이므로, 성능 면에서 약간의 오버헤드가 있을 수 있습니다. 또한, 매번 Python 스크립트를 실행하는 대신, Python 서버를 별도로 실행하고 PHP와 Python 간에 HTTP 요청을 주고받는 방식으로 성능을 개선할 수 있습니다.

 

6. 결론

PHP에서 Python을 실행하는 방법은 매우 간단합니다. shell_exec() 또는 exec() 함수를 사용하여 Python 스크립트를 실행하고, 그 결과를 PHP에서 처리하는 방식입니다. Python은 강력한 라이브러리와 기능을 제공하기 때문에, PHP와 결합하여 웹 애플리케이션에서 다양한 기능을 구현할 수 있습니다. 하지만 보안과 성능을 고려하여 적절한 방법을 선택하는 것이 중요합니다. Python과 PHP의 조합을 통해 더 많은 가능성을 열어보세요!

'PHP' 카테고리의 다른 글

[PHP] 코드를 아름답게...  (1) 2025.05.15
[PHP] PHP CLI 소개  (0) 2025.02.26
[PHP] PHP에서 암호화와 복호화 하는 방법  (1) 2023.12.30