apache的cgi接口运行python脚本报错的解决方式

1、实验环境

服务器/中间件:apache

主机:windows11

编程语言:python

2、报错复现&解决方式

2.1 #!的位置

apache的cgi接口运行python脚本报错的解决方式_第1张图片

报错信息

apache的cgi接口运行python脚本报错的解决方式_第2张图片

apache的cgi接口运行python脚本报错的解决方式_第3张图片

 解决方式

#!指明了执行程序Python的路径,必须要放到第一行,否则会报错。

2.2 输出乱码

查看环境变量,网页输出的格式设置为utf-8

apache的cgi接口运行python脚本报错的解决方式_第4张图片

 访问网页,出现乱码

apache的cgi接口运行python脚本报错的解决方式_第5张图片

查看当前页面的编码

apache的cgi接口运行python脚本报错的解决方式_第6张图片

删除编码语句

再次访问网页,显示正常,且编码为GBK

apache的cgi接口运行python脚本报错的解决方式_第7张图片

 这说明,在默认情况下,网页的输出格式为GBK编码,建议使用GBK编码

2.3 cookie消失

设置cookie

apache的cgi接口运行python脚本报错的解决方式_第8张图片

apache的cgi接口运行python脚本报错的解决方式_第9张图片

读取cookie

apache的cgi接口运行python脚本报错的解决方式_第10张图片

apache的cgi接口运行python脚本报错的解决方式_第11张图片

在环境变量页也找不到

apache的cgi接口运行python脚本报错的解决方式_第12张图片 修改代码,查看所有环境变量名

apache的cgi接口运行python脚本报错的解决方式_第13张图片

 也就是说cookie的值没有获取到,是空的,所以不显示

查看报错日志,在27行,cookie的数据中,gbk编码器无法对utf-8的字符串进行编码

apache的cgi接口运行python脚本报错的解决方式_第14张图片

 这是因为apache默认编码格式为utf-8,gbk编码器无法直接对utf-8的字符编码,需要使用unicode编码进行中转,因此会产生报错。

所以在这个文件中,最好不要在cookie中使用中文,如果要使用中文,你需要将中文转码。

注意:notepad++和windows的记事本都是默认为utf-8的格式

猜想验证

apache的cgi接口运行python脚本报错的解决方式_第15张图片

apache的cgi接口运行python脚本报错的解决方式_第16张图片

apache的cgi接口运行python脚本报错的解决方式_第17张图片

 在没有报错的情况下,除了能看到http相关的环境变量之外,还能看到更多的环境变量。

你可能感兴趣的:(python,服务器,运维)