ConfigParser geht nicht mit www-data user

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    ich habe folgendes Problem:
    Ich habe eine Python Datei (queue_execute.py), die zu Beginn mit einem ConfigParser eine .ini Datei einließt (from ConfigParser import SafeConfigParser ... falls es was bringt^^).
    Führe ich das Programm per Terminal normal als user Pi aus, funktioniert alles einwandfrei, ich lasse mir die eingelesenen Einträge aus dem ini file per Print ausgeben - läuft super.
    Nun möchte ich diese Python aber von einem Cronjob ausführen lassen. Dieser Cronjob wird übrigens vom User www-data angelegt (über eine PHP seite wird eine andere Pyhton aufgerufen, die den Cronjob anlegt, in der crontab des www-data users... weiß nicht ob das wichtig ist. Denn egal in welche Crontab ich es schreibe - auch wenn ich es manuell rein geschreibe, es funktioniert nicht).
    Der crontab Eintrag sieht beisielsweise so aus:

    Code
    7 14 * * 0,1,2,3,4,5,6 sudo python /var/www/FS/queue_execute.py 2sI 3sI 25sI


    Wenn Cron versucht, diese python auszuführen, bekomme ich aber folgende Fehlermeldung (per mail zugeschickt):

    Code
    Traceback (most recent call last):
    File "/var/www/FS/queue_execute.py", line 12, in <module>
      ini_db_host = ini_parser.get('datenbank', 'conf_host_name')[:-1][1:]
    File "/usr/lib/python2.7/ConfigParser.py", line 607, in get
      raise NoSectionError(section)
    ConfigParser.NoSectionError: No section: 'datenbank'

    Kurzum: Führe ich die Python als User pi aus, funktioniert es einwandfrei. Führt Cron sie aus, kann Python in der ini die Einträge scheinbar nicht mehr finden oder die ganze ini datei nicht mehr einlesen...
    Die .ini liegt übrigend im selben Ordner wie die Python.

    Hat jemand ne Ahnung woran es liegen könnte :-/ ?
    lg :)

  • Ja bin mir ziemlich sicher. Denn wenn ich den Befehl aus der Crontab raus kopiere und so eins zu eins in den terminal eingebe, wird die Python problemlos ausgeführt.
    Habe gerade aber probiert mal einen falschen Pfad zu der INI anzugeben, um zu sehen ob eine andere Fehlermeldung kommt, aber interessanterweise kommt dann immer noch die selbe Fehlermeldung. Also es wird immer noch ausgegeben, dass "datenbank" nicht existiert, wobei die INI gar nicht eingelesen werden dürfte.
    Automatisch zusammengefügt:
    ok habe das problem gerade scheinbar gelöst.
    Ich habe die INI Datei einen ordner weiter nach oben kopiert, also aus /var/www/FS nach /var/www ... scheint wohl ein problem mit dem Ordner FS gewesen zu sein.
    Aber danke für den Tipp mit der richtigen ini datei lesen, dadurch hab ichs erst probiert :D hatte das problem vorher bei der python gesucht :)

    Einmal editiert, zuletzt von score (24. November 2015 um 15:22)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!