테스트 사이트 - 개발 중인 베타 버전입니다

python파일 실행 채택완료

sIr어드밈 3년 전 조회 4,114

aws 가상서버입니다.

폴더보면 

 

/usr/share/nginx/html/그누보드 이렇게 있는데요...

 

 

<?php

    $python = `test.py`;

    echo $python;

?>

이렇게 그누파일 있는곳에 같이 넣고 

 

tython.py파일

------------------------

import random

import math

n = math.factorial(5)

print(random.randrange(100))

print(n)


print("파이썬") 

------------

 

이 py파일을 실행해보려고 했더니 안되어서 보니

 

python은

/usr/lib64/python3.7 이렇게 설치되어 있네요.

 

이경우 어떻게 해야 할까요?

 

 

 

 

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
B
3년 전

`test.py` 만 실행해서는 command not found겠죠.

`python test.py`처럼 실행해야 합니다.

그리고, 체크는 아래처럼 하면 됩니다.

</p>

<p><?php</p>

<p>echo `python -V`;</p>

<p>

아무것도 뜨지 않으면, Python 3.7 버전이 설치되었으니 아래처럼 해보세요.

</p>

<p><?php</p>

<p>echo `python3 -V`;</p>

<p>

정상적으로 Python 버전이 뜨면, 아래처럼 변경하면 됩니다.

</p>

<p><?php</p>

<p>$python = `python3 test.py`;

echo $python;</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

s
sIr어드밈
3년 전
감사합니다!! 덕분에 해결하였습니다.

댓글을 작성하려면 로그인이 필요합니다.

s

이거 된건지 봐주시면 고맙겠습니다.

 

<?php
header('Content-Type: text/html; charset=UTF-8');
//변수에 한글이 포함될 경우 아래 코드를 추가한다.
    putenv("LANG=ko_KR.UTF-8");
    setlocale(LC_ALL, 'ko_KR.utf8');

    $변수1 = "AAA";
    $변수2 = "가나다 bbb";
    $변수3 = "가 나 다"; //공백이 있을경우 문자열로 묶어줘야 함 //exec("python3 python.py ".$변수1." ".$변수2." \"".$변수3."\"", $output);
    exec("cd /usr/share/nginx/html/ && python3 py1.py ".$변수1." ".$변수2." \"".$변수3."\"", $output);
 
//이렇게 하는 이유는 경로를 지정해주고 python3를 실행해야 정상적으로 작동.

 

   //$rt=exec("ls");
    //echo $rt;
   //print_r($output);
   

    echo $output[0]. ""; //Success1
    echo $output[1]. ""; //Success2
    echo $output[2]. ""; //AAA
    echo $output[3]. ""; //가나다
    echo $output[4]. ""; //가 나 다
    ?>

 

php는 위와 같고

 

파이썬 파일은 py1.py 인데 다음과 같이 하니

 

# -*- coding: utf-8 -*-
import sys
 
def call(var_1, var_2, var_3):
    # 무언가를 처리하고..
   # print로 값을 return해서 php에서 받을 수 있음
    print('Success1', 'good')
    print('Success2', 'bad')


    print('Success3', 'no')
    print('Success4', '11111111111111111')

    print(var_1)
    print(var_2)
    print(var_3)
call(sys.argv[1], sys.argv[2], sys.argv[3])

 

그리고 브라우저에서  도메인/test.php 새로고침해보니

 

Success1 goodSuccess2 badSuccess3 noSuccess4 11111111111111111AAA

 

위와 같이 나옵니다.

 

질문1: 이제 되는건가요?

질문2: 이게 php파일에서 python 데이터를 가져오는건가요? 아니면 데이터도 가져오고 python 파일도 실행시키는 건가요?

 

파이썬 시작해본지가 며칠안되어 그렇습니다 헤헤
   

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

실행하려면 exec 로 해야하지 않나요?

</p>

<p><?php</p>

<p>    $python = `test.py`;</p>

<p>    exec("python ".$python);</p>

<p>?></p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

s
sIr어드밈
3년 전
여기보고 똑같이 해보고있는데요,,네이버 블러그는 암튼 도움이 안되요,,경로 때문일까요?
https://blog.naver.com/PostView.naver?blogId=netatom&logNo=221155462666&parentCategoryNo=&categoryNo=23&viewDate=&isShowPopularPosts=true&from=search
레전드플랫폼
3년 전
파이썬이 실행되는지는 확인해봤나요?
B
BiHon
3년 전
+ Execution Operators
- https://www.php.net/manual/en/language.operators.execution.php
- http://docs.php.net/manual/kr/language.operators.execution.php

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인