Integrando Python com PHP

27 de maio de 2022 Off Por Marcelo Martins

Neste artigo abordarei como rodar rotinas em python integrado com PHP.

Para exemplificar este projeto, estarei criando uma pagina PHP, conforme se segue:

<?php
    /*phpinfo();*/
	/*Registra webservice para processamento de jobs*/
	ini_set('display_errors', 'ON');
	error_reporting(E_ALL);

	include "/var/www/html/ws/connectdb.php";

	//header('Cache-Control: no-cache, must-revalidate');


$data = json_decode(file_get_contents("php://input"));


$data = json_decode(file_get_contents("php://input"));
if($data){
		$pergunta = $dbhandle->real_escape_string($data->pergunta);
} else {
		$pergunta = $dbhandle->real_escape_string($_GET['pergunta']);
}



if($pergunta){
  $command = escapeshellcmd('/var/www/html/python/nlp.py "'.$pergunta.'" > /var/log/proclog.log');
  $resposta = shell_exec($command);

  if($resposta){
  echo '{"rs":[';
  echo '{';
  echo '"pergunta":'.$pergunta.',';
  echo '"resposta":'.$resposta;
  echo '}]}';
  } else {
    echo "sem resposta";
  }
} else {
	echo "sem pergunta";
}


?>

Neste programa chamamos o comando shell_exec para executar o comando python.

Ao chamar o programa python, devemos chamar, conforme apresentado.

#!/usr/bin/env python3

#import pandas as pd
import sys


pergunta = f'"{sys.argv[1]}"'

resposta= '"ok"'
print(resposta)

O detalhe que é importante é o comando /usr/bin/env chamando o python, que é destinado a transformar em um script python.

Para finalizar segue o link do url de teste:

http://maurinsoft.com.br/python/runpy.php?pergunta=teste2

O resultado é um JSON, conforme apresentado:

{"rs":[{"pergunta":teste2,"resposta":"ok" }]}

Instalando pacotes

Para adicionar pacotes basta rodar como administrador o comando:

pip3 install numpy

Exemplo de instalação do numpy