我建立了Flask,一个带有mod_wsgi的apache下的python web微框架。
除python confparser外,应用程序运行正常。这不会引起错误:
parser = ConfigParser.ConfigParser()
parser.read('snati.con')
但是当我添加:
parser.get('database', 'user')
我在
的error.log中没有任何内容时出现内部服务器错误我也试过了:
file = open("sample.txt")
同样的结果。
必定存在一些配置问题,但我找不到它。
我的apache conf看起来像:
WSGIRestrictStdout Off
<VirtualHost *:80>
ServerName my.com
WSGIDaemonProcess myapp user=me group=me threads=5
WSGIScriptAlias / /home/me/www/myapp.wsgi
<Directory /home/me/www/myapp >
WSGIProcessGroup myapp
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
我的app.wsgi
#active the python virtualenv for this application
activate_this = '/home/gilles/www/snati/env/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
import sys
sys.path.insert(0, '/home/gilles/www/snati/src')
sys.stdout = sys.stderr
from app import app as application
什么可能出错,为什么我不能在Apache日志中得到错误?
答案 0 :(得分:5)
使用Python代码中文件的绝对路径,而不是相对路径。
流程的当前工作目录不是您的应用程序代码和文件的位置。
您没有看到任何错误,因为如果没有处于调试模式,Flask将不会记录它们。设置应用程序捕获它们并通过电子邮件发送或以其他方式记录它们。我不记得Flask对后者有什么选择。
答案 1 :(得分:0)
使用主变量
添加apache设置文件的路径WSGIDaemonProcess myapp user=me group=me threads=5 home=/path/to/your/directory
这会更改进程的工作目录。