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还是别的什么了。
我在 运行 在 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还是别的什么了。