【发布时间】:2017-01-08 09:24:08
【问题描述】:
我正在运行 Apache/2.4.10 (Raspbian),并且正在使用 python 进行 CGI。 但是当我尝试在简单代码中使用 os.system 时,我得到了这个格式错误的标头错误:
[Wed Aug 31 17:10:05.715740 2016] [cgid:error] [pid 3103:tid 1929376816] [client 192.168.0.106:59277] malformed header from script'play.cgi': Bad header: code.cgi
这是来自 play.cgi 的代码:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import cgi
import os
print('Content-type: text/html')
print('')
os.system('ls')
奇怪的是,如果我删除 os.system 行,它会神秘地重新开始工作。我试过用 popen 代替,同样的问题。我试图在一些代码中隐藏它,更改文件名,不同的编码甚至 time.sleep,这些都不起作用。
最奇怪的是它在更复杂的代码中也能正常工作。
【问题讨论】:
-
通常最好使用subprocess 而不是 os.system,这样您就可以更好地控制输入/输出。此外,您可能希望使用 WSGI 而不是 CGI,因为它不占用标准输入和标准输出。