windows+phpstudy(apache) 以cgi方式支持python(1)
windows+phpstudy(apache) 以cgi方式支持python简述:在处理这个解析的过程中,出现了各种各样的问题,别人没出现的我也出现了。前前后后整了好几个小时,期间看了很多人写的博客,但是总也一些问题不是一个两个博客就能解决的。接下来我将对配置进行一个讲解,希望对你有所帮助。看后如果有帮助或者有疑问的地方欢迎评论。1、 首先我们进行基础的配置,针对Apache中httpd.con
windows+phpstudy(apache) 以cgi方式支持python(1)
简述:在处理这个解析的过程中,出现了各种各样的问题,别人没出现的我也出现了。前前后后整了好几个小时,期间看了很多人写的博客,但是总也一些问题不是一个两个博客就能解决的。接下来我将对配置进行一个讲解,希望对你有所帮助。看后如果有帮助或者有疑问的地方欢迎评论。
1、 首先我们进行基础的配置,针对Apache中httpd.conf进行配置
参考了以下两篇文章
参考链接:
https://www.cnblogs.com/xuey/p/11857975.html
https://blog.csdn.net/m0_37971044/article/details/80451804
https://www.runoob.com/python3/python3-cgi-programming.html
2、在httpd.conf中查找DocumentRoot: +ExecCGI 支持cgi
DocumentRoot "D:\Application\phpstudy\WWW"
<Directory />
Options +Indexes +FollowSymLinks +ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
3、在httpd.conf中查找AddHandler,让apache识别py文件为cgi程序:
AddHandler cgi-script .cgi .pl .py
4、在httpd.conf中查找ScriptAlias ,指定目录下执行cgi程序
ScriptAlias /cgi-bin/ "D:/Application/phpstudy/Apache/cgi-bin/"
5、配置完以上步骤后重启Apache服务器。
接下来就是编写一个python脚本,并将其放在我们在httpd.conf中配置的解析目录中即D:/Application/phpstudy/Apache/cgi-bin。
#!D:\python\python.exe #python 运行程序位置
#coding=utf-8
print ("Content-type:text/html")
print () # 空行,告诉服务器结束头部
print ('<html>')
print ('<head>')
print ('<meta charset="utf-8">')
print ('<title>Hello Word - 一花一世界!</title>')
print ('</head>')
print ('<body>')
print ('<h2>Hello Word! 一花一世界,一叶一菩提</h2>')
print ('</body>')
print ('</html>')
6、python一定要加上#coding=utf-8,用来设置编码格式。不然会报服务器错误。
7、在这里要记得更改第一行代码中python解析器的位置,不然会报服务器错误。
如果还是出现服务器解析错误,尝试着把python脚本第一行的注释给去掉,我这边去掉就没有了服务器解析错误的问题,具体什么原因我也没整明白。
在更改了以上操作后,发现我的还是解析不了,根据之前他人博客中提示到的,如果还没解决,尝试着查看Apache错误日志,
8、将其主要的错误代码复制到了百度中进行查找,你要相信你遇到的问题别人也遇到过,
couldn't create child process: 22: html.py
9、参考了一篇博客,问题有些不同,但是实质是一样的。
参考链接:
https://blog.csdn.net/default7/article/details/54669728
接下来我们就是修改我们的python脚本中第一行的代码,即python解析器的位置,每一个反斜杠后面多加一个反斜杠。保存后发现运行成功了,但是web界面又出现了新的问题,对于中文解码出现了乱码的情况。
#!D:\\python\\python.exe #python 运行程序位置
10、接下来我又查了几篇博客,在一次修改了Apache中的配置。
参考链接:
https://blog.csdn.net/weixin_34112030/article/details/92938355
https://blog.csdn.net/wangato/article/details/76216230
其实就是在httpd.conf中更改一下Apache编码格式。我在我的httpd.conf中并没有找到“AddDefaultCharset ISO-8859-1”信息,于是我就新增加了一个这个配置,按照其他博客说的改成了utf-8,发现web界面还是乱码。我又将utf-8改成了gbk,记得每次更改服务器配置后重启Apache服务,终于功夫不负有心人,页面成功显示了。
编写cgi注意事项:
第一:#!前面不能有空格,后面紧跟解释程序(python.exe的路径);
第二,python等解释程序的目录是否正确;
第三,作为http协议的要求,一定要输出http headers;
第四,在存在http headers的前提下,一定要在headers后面打印一个空行,否则服务器会报错;
第五,把错误的程序在python的idle中执行一下,验证正确性;
最后,实在搞不定的情况下,百度 + 查看apache的logs文件夹下的error.log文件,来确定问题。
感谢你的阅读,希望对你问题的解决有所帮助。如有疑问或不清楚的地方,欢迎评论。共同进步,加油。
更多推荐



所有评论(0)