Liunx centos做了个pythonCGI程序,访问出现了500错误,网上都找不到解决办法。以为是apache配置问题。
现在把解决方案写下来,供大家参考。
我的配置是liunx+apache2.x+python3.x+CGI
第一步建议先查看,error log文件(看能不能找到原因)
如果找不到原因:看一下下面的解决办法
经过测试每一个设置都比较关键。任何一步有问题都不能成功。
cgi出现500错误 ,主要是由于 HTTP表头不对
cgi的通信依靠stdout与浏览器通信。
所以简单地在py-cgi文件里面写:
#!/usr/bin/python
print ('Content-Type: text/html')
print('')
print ('hello world' )
这样写貌似是没有问题
其实是错的
#!/usr/bin/env python2
print ''
print 'hello world'
改为py2依然不行!因为header与body之间必须有一个空行
另外:不写http header的情况下,apache会自动补上header。
代码简化一下,奇迹出现了:
#!/usr/bin/python
print ('\nhello world')
okkk了!就是一个“\n”


其他排错过程如下:
apache在liunx下面默认开启了CGI,配置cgi只需更改三处
1、配置去掉以下代码中的前“#”号:
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
2、第二个是更改下面代码:
<Directory "/var/www/cgi-bin/">
AllowOverride all
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
3、更改下面代码加上 .py的后缀:
AddHandler cgi-script .cgi .py
使用xshell,执行CGI对应的py文件,可以正常输出,以为不是py文件的问题了。其实恰好错了。
python文件必须要有下面的标头:
#!/usr/bin/python
python文件必须要有标头下面的空行:
print("\n")
更改对应py脚本的权限:755
总结:基本就解决了,这个是细节问题。
①先确认配置大环境没问题,apache访问html正常
②确认配置py’环境没问题xshell下可以执行对应的py
③确认上面的py细节问题
256



被折叠的 条评论
为什么被折叠?



