python cgi 脚本中的子进程不是 运行

Subprocess not run in python cgi script

我在 运行 在 Python CGI 脚本中设置子进程时遇到问题。

我将 运行 python 文件作为 python CGI 脚本中的子进程。

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.

我想,可能是权限问题,所以我尝试直接在script.py中创建test.txt,而不是在'test.py'上,创建成功。

所以,主要问题是 Python CGI 脚本不能 运行 子进程。

当 运行在浏览器上作为 Python CGI 脚本时,我不会收到任何错误。

我该如何解决这个问题?

如果 sudo 不起作用,请查看系统日志。可以有帮助您进行调试的消息。这些文件在 /var/log 中,如果您按时间 ls -t 列出,您将看到刚刚更改的文件。

首先尝试不使用 sudo。将您的文件放在不需要 sudo 权限的地方,例如 /tmp/test.txt。然后你就知道问题是sudo还是别的什么了。