I have a django app containing a model with a file upload field. the upload field takes the targeted file and uploads a copy to either an existing directory in the media root or, if the directory hasn’t been created, it creates the directory and drops the file inside of it.
The app works beautifully in dev, utilizing the built-in django server, but when I move it to a production server (my OSX machine running an apache2 instance with mod_wsgi) I get “[Error 13] Permission denied” thrown from the mkdir function in django’s storage.py whenever I try to upload a file. I strongly suspect there is permission syntax that needs to be added to my apache httpd.conf. I don’t know why else the django server has no trouble with the code but apache gags. Does anyone know?
I guess sometimes an error message is exactly what it says it is. In this case “[Error 13] Permission denied” was being thrown because apache didn’t have write access to the directories the django app was attempting to upload to. I simply navigated to the the directories I set as file upload directories, and gave write permissions on them systemwide. This probably wasn’t the most secure solution, but it was the most practical as, it works and I don’t know how to explicitly set write permissions for apache2 without just opening the directory systemwide.
Also, I didn’t post the question at serverfault because I didn’t know whether it was a django config issue or an apache issue.