Apache CustomLog管道到脚本失败

时间:2014-04-04 02:01:09

标签: python apache

我正在尝试将一个CustomLog添加到我的apache httpd.conf文件中,该文件将logformat管道输入到脚本中。 test.py脚本现在非常简单,因为我只是想让它工作。当我从命令行运行脚本时,它完全按预期工作。当apache调用脚本时,它以root身份调用它。我已将用户/组设置为该脚本的root用户,并且作为预防措施,我已在脚本上完成了chmod 777。问题是,当我重新启动httpd时,error_log文件开始填满此错误。我甚至试图将脚本文件设为空文件,但我仍然遇到此错误。作为旁注,我的配置文件中有另一个CustomLog管道,它可以分割和旋转我的日志,它工作正常。

apache / logs / error_log输出

AH00106: piped log program '/hwnet/dtg_devel/web/boarddev/applications/test.py' failed unexpectedly

的httpd.conf

LogFormat "%V %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" vcombined
CustomLog "|/hwnet/dtg_devel/web/boarddev/applications/test.py" vcombined  

test.py

#!/usr/bin/python
with open("/hwnet/dtg_devel/web/boarddev/applications/test.log", "a") as output_log:
    output_log.write("Hello World\n")

系统配置

python: 2.6.6
apache: 2.4.7

1 个答案:

答案 0 :(得分:2)

我最终发现问题与我的脚本有关。 apache的工作方式是将脚本作为后台进程启动,并且该进程应该正在运行,以便apache可以将新日志推入其中。我的脚本编写的方式是运行一次然后退出。因此,每次apache尝试将新的日志记录推送到它时,它都没有在后台运行以接收它,从而导致错误。