python3在linux上cgi脚本无法运行 No such file or directory

学习python3到网络编程cgi脚本这块,有这样一个示例服务器。

import os, sys
from http.server import HTTPServer, CGIHTTPRequestHandler

webdir = '.'      # HTML文件和cgi-bin脚本目录位置
port   = 10001    #

if len(sys.argv) > 1: webdir = sys.argv[1]             # 指定web文件目录
if len(sys.argv) > 2: port   = int(sys.argv[2])        # 指定端口
print('webdir "%s", port %s' % (webdir, port))

os.chdir(webdir)                                       # 在HTML根目录下运行
srvraddr = ('', port)                                  
srvrobj  = HTTPServer(srvraddr, CGIHTTPRequestHandler)
srvrobj.serve_forever()                                # 启动服务端

在这个示例服务器的目录内有一个文件夹:cgi-bin,里面存放了用于演示的cgi脚本tutot.py。
经过测试发现,运行服务后,直接点击cgi-bin目录,会报403错误。
在这里插入图片描述
在这里插入图片描述
测试后发现在windows下,运行cgi脚本需要输入完整全地址才能正确运行cgi:
在这里插入图片描述
但是在linux下,即使输入完整地址也不会正确运行cgi脚本:
在这里插入图片描述
此时服务端报错:

192.168.225.1 - - [27/Mar/2020 17:17:30] "GET /cgi-bin/tutor0.py HTTP/1.1" 200 -
----------------------------------------
Exception happened during processing of request from ('192.168.225.1', 2840)
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/http/server.py", line 1127, in run_cgi
    os.execve(scriptfile, args, env)
FileNotFoundError: [Errno 2] No such file or directory: '/root/j-python/PP4E/Internet/Web/cgi-bin/tutor0.py'
----------------------------------------

但是文件分明是存在的,经过上网搜索发现,这个报错只是名称为 “No such file or directory”,真实原因不一定是"找不到文件或目录"。。。。。。
经过搜索,更改了cgi-bin文件夹内所有文件的权限为777,依旧不能解决问题,当然对于cgi脚本而言,是必须给予可执行权限的。
在这里插入图片描述
考虑到linux上的python脚本文件一般需要加上 #!/usr/bin/python3 指明运行环境才能运行,尝试给cgi脚本增加了#!/usr/bin/python3

#!/usr/bin/python3
print('Content-type: text/html\n')
print('<TITLE>CGI 101</TITLE>')
print('<H1>A First CGI Script</H1>')
print('<P>Hello, CGI World!</P>')

但是问题并没有解决,还是显示一片空白。
在这里插入图片描述
最终发现是由于linux下与windows下编码方式不同,代码在windows记事本编写,到linux下后找不到 #!/usr/bin/python3这行。导致cgi脚本没有找到环境。
尝试删除tutor0.py这个文件,然后在linux下重新创建并编辑。

#!/usr/bin/python3
print('Content-type: text/html\n')
print('<TITLE>CGI 101</TITLE>')
print('<H1>A First CGI Script</H1>')
print('<P>Hello, CGI World!</P>')

完成以上操作后,cgi访问正常:
在这里插入图片描述
总结一下:
python的cgi脚本在linux下的运行有几个关键点需要满足:
1,给予cgi脚本文件足够的执行权限
2,将cgi文件放置于cgi-bin文件夹下(当然还有其他方法)
3,在cgi脚本头部设置环境 #!/usr/bin/python3
4,注意文件的编码方式,文本文件内不能有/r/n这样的windows记事本格式,最好重新在linux下创建的
(vim这样的编辑器是看不到/r/n的,所以最好重新创建文件)。
OVER

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
管理系统,作为一种高效的企业运营管理工具,旨在通过集成化、系统化的手段,对组织内部的各类资源进行规划、协调、控制和优化,以实现企业战略目标,提升运营效率,增强核心竞争力。以下是对管理系统的详细介绍: 一、定义与构成 管理系统是指由硬件设备、软件应用、数据资源、人员以及相关管理制度共同构建的,用于处理、监控、分析和决策各类业务活动的综合信息系统。它通常包括以下几个核心组成部分: 数据采集模块:负责从各类业务环节中实时、准确地收集信息,形成企业的基础数据资源。 数据分析模块:运用统计学、人工智能等技术对数据进行深度挖掘和智能分析,提供决策支持。 业务流程管理模块:设计、执行、监控和优化业务流程,确保各项任务按照预定规则高效运转。 决策支持模块:基于数据分析结果,为管理者提供直观的可视化报告,辅助其进行科学决策。 用户界面与交互模块:提供友好的人机交互界面,方便用户操作使用。 二、主要类型与功能 管理系统根据所针对的管理对象和领域,可分为多种类型,如: 人力资源管理系统(HRM):涵盖招聘、培训、绩效考核、薪酬福利等人力资源全流程管理,提升人才效能。 客户关系管理系统(CRM):集中管理客户信息,优化销售、营销和服务流程,提升客户满意度和忠诚度。 供应链管理系统(SCM):整合供应商、制造商、分销商、零售商等供应链各环节,实现物流、资金流、信息流的协同运作。 企业资源计划系统(ERP):对企业内部财务、生产、采购、库存、销售等各项资源进行全面集成管理,提高整体运营效率。 项目管理系统(PM):对项目全生命周期进行规划、跟踪、控制,确保项目按时、按质、按预算完成。 三、价值与优势 提高效率:自动化工作流程、标准化业务操作,显著减少人工干预,提升工作效率。 优化决策:实时数据分析与预测,提供精准的决策依据,助力管理层做出明智选择。 资源整合:打破部门壁垒,实现信息共享,优化资源配置,降低运营成本。 合规风控:内置法规遵循机制,强化内部控制,降低经营风险。 持续改进:通过对系统数据的持续监控与分析,驱动业务流程持续优化,促进企业创新与发展。 总的来说,管理系统作为现代企业管理的重要工具,以其强大的数据处理能力、智能化的决策支持和高效的业务流程管理,有力推动了企业的数字化转型,助力企业在日益激烈的市场竞争中保持竞争优势。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值