2017-06-29 3 views
1

Ich habe eine API in PHP erstellt, die eine input.csv-Datei in Form einer Post-Anfrage erhält und diese Datei im Root-Benutzer eines digitalen Ozean-Servers gespeichert wird. Mit Hilfe dieser Datei habe ich den exec-Befehl in PHP verwendet, um ein Python-Skript auszuführen, das in einem der Ordner des Root-Benutzers auf demselben digitalen Ozeanserver gespeichert ist. Nach dem Ausführen des Python-Skripts wird eine weitere CSV-Datei namens output.csv erstellt, die dann von der API gelesen wird und als Antwort auf die Trefferanforderung auf dem digitalen Ozeanserver ausgegeben wird.Ich versuche ein Python-Skript aus einer PHP-Datei auszuführen

Aber das Problem, mit dem ich konfrontiert bin, ist immer, wenn ich versuche, die URL des digitalen Ozean-Servers mit Postman oder Browser als Post-Anfrage zum Testen zu treffen Ich sehe nicht die Ausgabe.csv-Datei im Root-Benutzer erstellt Gruppe des Servers. Jedoch konnte ich sehen, dass die input.csv-Datei erstellt wurde, die als Parameter übergeben wurde, während sie die URL traf. Der Grund, den ich aus meiner Analyse erkennen konnte, ist, dass die von mir erstellte PHP-API das Python-Skript, das produziert, nicht ausführen kann die output.csv Datei, deren Inhalt ich interessiert bin.

Eine weitere Sache wie ich die URL von Apache-Server treffen, so ist es von www-Daten Benutzergruppe und der Server, wo die Python-Datei liegt, ist von Root Benutzergruppe . Ich habe das gerade geschrieben, um zu wissen, ob es ein Problem gibt, das mit der Erlaubnis zusammenhängt oder nicht.

Ich verwende den Befehl exec, um das Python-Skript auszuführen. Der Code meiner API ist unten angegeben, jede Hilfe wäre willkommen.

<?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>"; 
    ?> 

Antwort

Verwandte Themen