问题描述
我在从apache2运行python脚本时遇到问题。 我正处在从完全用python编写的简单网络服务器运行OK三年到使用apache的早期阶段,因此python代码中的许多输入和输出似乎是错误的。 我在Armbian'Buster'上安装的新apache2服务器正确找到了这个index.html
<!DOCTYPE html>
<HTML lang="en">
<HEAD>
<Meta charset="utf-8">
<TITLE> Authentication </TITLE> <br />
</HEAD>
<H3><big><big> Enter Username and Password
<BODY>
<form action=/cgi-bin/processIndex.py method="post">
<div>
<label for="user"> User Name: </label>
<input maxlength="20" size="20" type="text" id="user" name="user" value="" > <br><br
/>
<label for="pass"> Password: </label>
<input maxlength="40" size="40" type="text" id="pass" name="pass" value="" > <br />
<br />
</div> <br />
<INPUT TYPE="hidden" name="reverse" value="index.html">
<INPUT TYPE="hidden" name="retry" value="index.html">
<INPUT TYPE="hidden" name="forward" value="introduction.html">
<INPUT TYPE="submit" name="submit" value="Clear">
<INPUT TYPE="Submit" name="submit" value="Submit">
</FORM>
</BODY>
</HTML>
填写表格并单击“清除”或“提交”后,我得到 “内部服务器错误”页面以及/var/log/apache2/error.log中的此错误
[Tue Nov 10 12:39:23.737425 2020] [cgi:error] [pid 6116] [client 192.168.0.19:56705] /
AH01215: (13)Permission denied: exec of '/var/www/html/cgi-bin/processIndex.py' Failed: /
/var/www/html/cgi-bin/processIndex.py,referer: http://192.168.0.35:85/
[Tue Nov 10 12:39:23.739415 2020] [cgi:error] [pid 6116] [client 192.168.0.19:56705] /
End of script output before headers: processIndex.py,referer: http://192.168.0.35:85/
[Tue Nov 10 12:40:11.004077 2020] [reqtimeout:info] [pid 4481] /
[client 192.168.0.19:56706] AH01382: Request header read timeout
apache is running by user waterctl
ps aux | grep apache
root 7599 0.0 0.3 6336 3216 ? Ss 12:52 0:00 /usr/sbin/apache2 -k start
waterctl 7600 0.0 0.2 6244 2200 ? S 12:52 0:00 /usr/sbin/apache2 -k start
waterctl 7601 0.0 0.2 6360 2204 ? S 12:52 0:00 /usr/sbin/apache2 -k start
waterctl 7602 0.0 0.2 6360 2204 ? S 12:52 0:00 /usr/sbin/apache2 -k start
waterctl 7603 0.0 0.2 6360 2204 ? S 12:52 0:00 /usr/sbin/apache2 -k start
waterctl 7604 0.0 0.2 6360 2204 ? S 12:52 0:00 /usr/sbin/apache2 -k start
waterctl 7605 0.0 0.2 6360 2204 ? S 12:52 0:00 /usr/sbin/apache2 -k start
waterctl 7729 0.0 0.0 6728 536 pts/4 S+ 12:55 0:00 grep apache
在脚本路径中一直设置适当的权限
ls -al /var/www/html/cgi-bin | grep processIndex
-rwxr-xr-x 1 waterctl waterctl 2433 Nov 10 12:38 processIndex.py
在终端上调用/ usr / bin / python将启动python 3.7解释器 显然,服务器已找到脚本的正确路径。 这是脚本
enter code here
#! /usr/bin/python
"""
<!DOCTYPE text/plain>
"""
#
# processIndex.py
#
import webUtil
from os.path import exists
from time import sleep
#
def pyScript(parent,fields,dummy1,dummy2):
#
reverse = webUtil.getValue(fields,'reverse')
submit = webUtil.getValue(fields,'submit')
if submit == 'Clear':
webUtil.nxtOp(parent,reverse,dummy1)
return
forward = webUtil.getValue(fields,'forward')
if forward == '': # This stops 404 errors
forward = '/introduction.htm'
retry = webUtil.getValue(fields,'retry')
#
# If the configuration file exists,load the name and password
# then check the form data against the cfg data
#
config = webUtil.progAbsPath+webUtil.configName
if exists(config):
cfgFile = open(config,'r')
line = cfgFile.readline()
cfgFile.close()
line = line.rstrip('\n')
cfgList = line.split(':')
#
# cfgUser = cfgList[0] and cfgPassword = cfgList[1]
#
user = webUtil.getValue(fields,'user')
password = webUtil.getValue(fields,'pass')
#
# print " 'cfgUser' = '"+cfgList[0]+"','cfgPassword' = '"+cfgList[1]+"'"
if user != cfgList[0] or password != cfgList[1]:
sleep(15)
webUtil.errorAndMessage(parent,retry,"both valid user name and password")
return
else:
webUtil.errorAndMessage(parent," configuration data in the setup
procedure")
return
#
# This is the first opportunity to load some
# setup info from files,so do it Now.
# Construct a list of activated programs from the crontab file
# because activated programs must not be edited or deleted
#
cronAbsPath = webUtil.progAbsPath+webUtil.cronTabName
if exists(cronAbsPath):
cronFile = open(cronAbsPath,'r')
cronLine = 'dummy'
while cronLine != '':
cronLine = cronFile.readline()
# print cronLine
i = -1
j = 1
while j >= 0:
j = cronLine.find('/')
if j >= 0:
i = j
cronLine = cronLine[i+1: len(cronLine)]
cronLine = cronLine[0:len(cronLine)-1]
if i >= 0 and not cronLine in webUtil.actList:
webUtil.actList.append(cronLine)
cronFile.close()
#
# Initialisation done. Now proceed to next web form.
#
webUtil.nxtOp(parent,forward,dummy1)
return
我没有正确做些什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)