2017-06-29 2 views
1

J'ai créé une API en PHP qui reçoit un fichier input.csv sous la forme d'une demande de publication et ce fichier est enregistré dans l'utilisateur root d'un serveur océanique numérique. Avec l'aide de ce fichier, j'ai utilisé la commande exec en PHP pour exécuter un script python conservé dans l'un des dossiers de l'utilisateur root dans le même serveur océanique numérique. Après l'exécution du script python, il créera un autre fichier csv nommé output.csv qui sera ensuite lu par l'API et donné en réponse à la demande d'accès au serveur océanique numérique. Mais le problème auquel je suis confronté est chaque fois que j'essaye de frapper l'URL du serveur de l'océan numérique en utilisant un postier ou un navigateur comme une demande de test pour le test je ne vois pas le fichier output.csv créé dans l'utilisateur root groupe du serveur. Cependant, je pouvais voir le fichier input.csv en cours de création qui est passé en paramètre en tapant l'url. La raison que j'ai pu comprendre de mon analyse est que l'API php que j'ai créée n'est pas capable d'exécuter le script python qui produit le fichier output.csv dont le contenu m'intéresse.J'essaie d'exécuter un script Python à partir d'un fichier PHP

Encore une chose car j'atteins l'url du serveur apache donc c'est du groupe d'utilisateurs www-data et du serveur où le fichier python se trouve du groupe d'utilisateurs root . Je viens d'écrire ceci pour savoir s'il y a un problème lié à la permission ou non. J'utilise exec command pour exécuter le script Python. Le code de mon api est donné ci-dessous toute aide serait appréciée.

<?php 
     $input_file_content = base64_decode($_POST['file_contents']); 
     print_r($input_file_content); 
     $python_file = "/var/www/html/selenium/scrap.py"; 
     $input_file = dirname(__FILE__) . "/input.csv"; 
     $output_file ="/var/www/html/selenium/output2.csv"; 
     file_put_contents($input_file, $input_file_content); 
     exec("whoami 2>&1", $output, $return_var); 
     print_r($output); 
     exec("sudo /root/anaconda2/envs/venv/bin/python " . $python_file); 
        echo "<final_string>"; 
     echo base64_encode(file_get_contents($output_file)); 
     echo "</final_string>"; 
    ?> 

Répondre