2016-09-19 4 views
4

Gibt es spezielle Berechtigungen oder Einstellungen, um ein Python-Skript auszuführen, das eine neue Datei oder ein neues Image erstellt? Dies ist mein Code:Python-Skript mit Ausgabe von PHP ausführen

<? 
function py(){ 
    exec('python my_script.py'); 
    echo "ok"; 
} 

py(); 
?> 

Und das ist mein Python-Skript (ein Beispiel):

#!/usr/bin/python 
import sys 

f = open('out.txt', 'w') 
print >> f, 'thats all' 
f.close() 

php Lauf i "ok" -Meldung, aber keine Datei erstellt bekommen. Was mache ich falsch?

+0

PHP sollte vom Benutzer 'www-user' ausgeführt werden. Also würde das Python-Skript von demselben Benutzer gestartet werden. Hat 'www-user' die gewünschten Berechtigungen, um das Python-Skript auszuführen und auf das Dateisystem für die Dateierstellung zuzugreifen? – albert

+0

Wie kann ich das überprüfen? @albert – slash89mf

+0

Ich habe das noch nie gemacht, da ich kein PHP-Benutzer bin, also ist alles, worüber ich spreche, nur auf Gedanken basiert. Zuerst sollten Sie herausfinden, welcher Benutzer der Eigentümer des Ordners und des Skripts ist, auf das Sie zugreifen möchten. Wenn dies nicht "www-user" ist, können Sie entweder den Benutzer zu "www-user" ändern oder den gewünschten Benutzernamen an den Befehl 'exec' übergeben, wie hier [hier] (http://stackoverflow.com/questions/6913403)/running-command-line-application-from-php-as-specific-user) – albert

Antwort

1

Festlegen der richtigen Berechtigungen für Datei und Ordner hat den Trick.

enter image description here

Unter Mac OS: Alt + Klicken Sie auf "+", dann für _www suchen und World Wide Web-Server-Benutzer hinzufügen, Lese- und Schreibberechtigung zu geben. Gleiches gilt für den Stammordner.

0

Sie müssen shell_exec() nicht exec() anrufen, wenn Sie die Ausgabe zu erfassen in der Lage sein wollen:

Refernce: PHP Manual

+0

Dies ist mehr von eine Möglichkeit zu debuggen, also sollte es ein Kommentar sein, wenn ich das richtig verstehe. – Goose

+0

Ich brauche keine Ausgabe zu erfassen, ich möchte Python-Skript ausführen und Dateien erstellen. Tatsächlich hat die Verwendung von shell_exec() keine Auswirkungen – slash89mf