我在尝试runoob.com中的Python3CGI编程(Python3 CGI编程 | 菜鸟教程 (runoob.com))过程中遇到了以下问题,以下列出解决方式,希望有所帮助。
同时,我编译了一个C源程序 并生成了一个.cgi文件,这个文件运行是正常的(参考(35条消息) CGI环境配置(Ubuntu)_cgi配置_kyrielx的博客-CSDN博客(这篇文章只讲了C的CGI编程的环境配置 注意python的CGI编程环境配置要看下面那篇文章))
但是这个.py文件就是运行不出来
首先我按照提示完成了文件编写,以及apache安装等步骤,尝试运行程序时网页出现了以下报错
查看错误日志
tail /var/log/apache2/error.log
针对这种情况,我通过查看日志排查出以下问题
1.文件权限不够,这边需要给要运行的.py文件相应的运行权限,权限不对时会报出以下错误
输入chmod 755 要运行的文件名 从而改变相应文件权限
chmod 755 t1.py
2.文件格式问题,这边报错说找不到文件,其实是因为我在Windows编写的程序格式(dos)与Linux中的程序格式(unix)不同,若程序路径无误缺报出以下错误时,建议检查文件格式
使用vi编辑器打开文件,检查文件格式(:set ff)若为dos,则修改为unix(:set ff=unix)
vi t1.py
:set ff
:set ff=unix
除了这些问题外,还有如python3路径错误等问题,可以在大佬们的文章里参考
以下是我参考大佬们的文章
(35条消息) 菜鸟教程:Python3 CGI编程实操演练-Ubantu_菜鸟教程cgi编程软件_初级点工的博客-CSDN博客
sh提示“no such file or directory”解决办法-百度经验 (baidu.com)
(35条消息) liunx+apache+python+CGI+出现500错误解决办法_hellojike的博客-CSDN博客
(35条消息) apache的cgi接口运行python脚本报错的解决方式_颂0的博客-CSDN博客
(这部分为转载)
另外,第一个 cgi 程序这个部分,在英文的 linux 系统下,如果你按照教程的范文编写执行会抛出错误,解决办法有两个,一是修改程序,修改默认stdout,修改后的程序如下:
#!/usr/bin/python3 import sys import io sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') print ("Content-type:text/html") print () # 空行,告诉服务器结束头部 print ('<html>') print ('<head>') print ('<meta charset="utf-8">') print ('<title>Hello Word - 我的第一个 CGI 程序!</title>') print ('</head>') print ('<body>') print ('<h2>Hello Word! 我是来自菜鸟教程的第一CGI程序</h2>') print ('</body>') print ('</html>')