问题描述
在Python CGI脚本中运行子进程时遇到问题。
我将在python CGI脚本中将python文件作为子进程运行。
script.py
#!enable debugging
import cgitb
cgitb.enable()
print("Content-Type: text/html;charset=utf-8")
print()
import subprocess
p = subprocess.Popen(["sudo","/usr/bin/python3","test.py"],stdout=subprocess.PIPE)
test.py
f.open("test.txt","a")
f.write("This is test")
f.close()
如果我在控制台中运行script.py
,它将成功创建test.txt
文件。
但是,如果我在使用Python CGI的浏览器上运行它,它将无法创建test.txt
。
我认为,这可能是由于权限引起的,所以我尝试在test.txt
中直接创建script.py
,而不是在'test.py'上创建成功。
因此,主要问题是Python CGI脚本无法运行子进程。
以Python CGI脚本在浏览器上运行时,我没有任何错误。
如何解决此问题?
解决方法
如果sudo不起作用,请查看系统日志。可能会有消息可以帮助您进行调试。这些文件位于/var/log
中,如果按时间ls -t
列出,则将看到刚才更改的文件。
首先尝试不使用sudo。将文件放在不需要/tmp/test.txt
之类的sudo权限的地方。这样您就知道问题出在sudo还是其他原因。