2017-05-10 9 views
0

Ich habe versucht, in eine Datei schreiben mit einem Python-Skript, das von Apache ausgeführt wird. Und das ist das Skript, das ich habe:Das Ausführen eines Python-Skripts mit Apache gibt Erlaubnis Fehler

#!/usr/bin/env python 
print "Content-Type: text/plain" 
print "Cache-Control: no-store" 
print "Pragma: no-cache" 
print "Expires: 0" 
print 

file_name = '/my/path/file.ext' 
try: 
    open(file_name, 'w').write('hello') 
    print "Good" 
except IOError as e: 
    print "I/O error({0}): {1}".format(e.errno, e.strerror) 
except Exception, e: 
    print str(e) 

Als ich das Skript über die Befehlszeile ausführen, ist das Ergebnis: Good, aber wenn Apache das Skript ausgeführt wird, erhalte ich I/O error(13): Permission denied

Ein paar Notizen :

  • Das Verzeichnis zu schreiben versucht beschreibbar (+ w)
  • Die Datei in einem ausführbaren Verzeichnis (+ x) und alle sein Elternverzeichnis ectories sind auch ausführbar
  • Ich habe das Skript über die Befehlszeile mit dem gleichen Benutzer wie Apache ausgeführt (und es funktioniert).
+0

Ärgere dich nicht einmal mit CGI. Wenn Sie eine Datenbank haben, verwenden Sie django. wenn Sie nicht Flask verwenden. – e4c5

+0

@ e4c5 Dies ist Teil eines größeren Projekts, der Wechsel zu Flask (oder Django) kommt nicht in Frage. – Rodolfo

+1

ok, aber mit CGI so zu kämpfen erinnert mich daran, wie wir vor 20 Jahren Dinge gemacht haben – e4c5

Antwort

0

Das Problem in diesem bestimmten Fall war SELinux, die den Vorgang blockierte. Ich habe SELinux vorübergehend deaktiviert, aber die bessere Antwort ist das Hinzufügen einer Sicherheitsrichtlinie für diesen Vorgang.

Verwandte Themen