只有[:error] [pid#] 1.0#的Apache内部服务器错误在error_log

时间:2015-05-26 23:00:51

标签: python apache flask mod-wsgi

我正在通过mod_wsgi为Apache提供Flask应用程序。

该应用是一种网络表单,可在表单提交时将字段保存到本地文件。一切顺利运行,而不是偶尔在命中表单提交时服务器抛出内部服务器错误。到目前为止,我还没有看到任何实际写入文件的内容 - 即使表单提交成功而没有内部服务器错误。我怀疑它与文件写入权限有关。

error_log中的唯一条目没有任何亮点,至少对于我未经训练的眼睛:

  

[5月26日22:35:46.401070 2015] [:错误] [pid 28335] 1.0 1
  [Tue May 26 22:37:33.313577 2015] [:error] [pid 28339] 1.0 1
  [Tue May 26 22:38:21.074149 2015] [:error] [pid 28336] 1.0 1
  [Tue May 26 22:46:04.284230 2015] [:错误] [pid 28338] 1.0 2
  [Tue May 26 22:46:04.291985 2015] [:error] [pid 28340] 1.0 2

有什么建议我应该做些什么来进一步缩小调查范围?

我已经尝试暂时禁用本地文件保存并且它似乎确实消除了问题(当写入文件代码被注释掉时没有发生内部服务器错误,而至少十分之一的迭代会得到内部服务器错误当取消注释写入文件代码时。)

写入文件的python代码只是对以下内容的调用:

def logtofile(text):
    with open("usagelogs.txt", "a") as myfile:
        myfile.write(text)
    return

如上所述,我一直无法看到任何写这种写作的迹象 - 虽然我不得不承认我也不确定该文件将写入何处(它是否与.py在同一条路径中)文件,或其他地方?)

当我在localhost(非生产Web服务器)上运行代码时,代码运行正常。

在我正在运行的生产环境中:   服务器版本:Apache / 2.4.6(CentOS)

根据目前收到的评论进行更新:

更改文件路径(如下所示)确实删除了内部服务器错误,但我仍无法找到实际存储logs.txt的位置。任何提示?

dir = os.path.dirname(__file__)
file = os.path.join(dir,'logs.txt')

def logtofile(text):
    with open(file, "a") as myfile:
        myfile.write(text)
    return

更新2

现在解决方法如下:

  1. 修改后的用户和组here
  2. 确定文件保存为/var/www/html//logs.txt
  3. 通过1中定义的用户和组对文件进行了限制。

1 个答案:

答案 0 :(得分:0)

现在解决方法如下:

  1. 修改后的用户和组here
  2. 确定文件已保存为/var/www/html/<app name>/logs.txt
  3. 通过1中定义的用户和组对文件进行了限制。