Ich habe ein PHP-Skript, das mit einer Datenbank verbunden ist. Die Idee hinter dem folgenden Array ist, dass diese Information in die Datenbank eingefügt wird. Die Kategorie muss durch einen ML-Algorithmus festgelegt werden, für den ich textblob für Python verwende. Ich benutze das Codeigniter-PHP-Framework.Ausführen eines Python-Programms mit Parametern und Verwendung des Ergebnisses als PHP-Variable? (CodeIgniter, TextBlob, Python 3.4, PHP 7)
$temp = $this->input->post('issue');
$data = array(
'priority' => '1',
'Summary' => $this->input->post('issue'),
'status' => 'Submitted',
'category' => exec("python machineLearning.py .$temp"),
'itemsRequired' => ' ',
'lastUpdate' => date('Y-m-d G:i:s'),
'ownerID' => $this->session->userdata('username'),
'managerID' => 'tech'
);
Das Python-Skript (machineLearning.py) funktioniert problemlos, wenn es selbst aufgerufen wird. Der Fehler, den ich bekomme, ist, dass die Kategorie derzeit als eine leere Zeichenfolge übrig ist. Ich habe versucht, einen Test zu verwenden mit:
exec("python machineLearning.py idCard", $output);
print_r($output);
Aber das Ergebnis ist nur ein leeres Array:
Array()
Das Python-Programm hat die Maschine innerhalb einer Funktion Lernen benannte machineLearning und nimmt einen Parameter mit dem Namen issue. Ich brauche den Wert von
$this->input->post('issue')
in die Maschinelles Lernen-Funktion im Python-Programm zu übergeben. Übergebe ich die Parameter falsch oder benötigt die Funktion exec() den korrekten Pfad zum Programm? Danke allen.
LÖSUNG GEFUNDEN
Eine Kombination der beiden aktuellen Argumente hat das Problem gelöst, ich hatte meinen Weg in die Datei zu aktualisieren, innerhalb der exec() Funktion, und aktualisieren Sie den Parameterbereich des exec function(), musste aber zusätzlich die if-Anweisung vorschlagen. Vielen Dank für Ihre Hilfe
Ich würde sehr empfehlen, Benutzereingaben zu entgehen/zu bereinigen, bevor Sie sie in einem Shell-Befehl verwenden. Im Moment könnte jemand ein bösartiges Problem wie '; rm -Rf .' – Devon
@Devon Ich habe davon gehört, aber ich arbeite gerade daran, das so einfach zu machen. Wie wäre ich jedoch in Bezug auf diese Frage? –
Es gibt eine Funktion in PHP dafür, EscapeShellarg, die sich als nützlich erweisen sollte. – Devon