Integrando Python com PHP

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