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