子进程未在python cgi脚本中运行

问题描述

在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还是其他原因。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...