I have seen several posts about this problem. I just had the problem and solved it. However, none of the several posts I read had the answer that applied in my case. I did not read ALL of the posts mentioning this problem so some of them may have had an applicable answer.
If you are a linux noob like me you might run into this problem. The problem is caused by the fact that web2py/wsgi do not have the privileges to write to the directory that holds your application. If you have set up wsgi to run as a daemon as www-data then www-data must have access to the applications directories. You should NEVER let web2py or wsgi (the daemon) be root. If you did, then anyone who managed to get into your web2py admin site with your root password could write arbitrary python code and execute it which could do anything to your server because root has access to everything. If the daemon is www-data and you allow www-data GROUP to have rwx privileges only in your www directory and your web2py directory--and no other directories on your server (you may have other apps that need www-data group privileges such as phpmyadmin) then the worst that can happen is that www and web2py might be compromised (which is bad enough but quite contained). Now, once the wsgi daemon runs as www-data then so does web2py. Web2py needs rwx privileges on applications. If you don't give the www-data group rwx privileges then web2py returns an unrecoverable ticket--it can't do anything with that application.