- 已经安装:XAMPP \ python3.7
- 以下修改内容均在xampp里的Apache配置文件:httpd.conf
1.设置我们的py文档的存储路径,以便Python解释器能够找到它(也就是设置访问权限)
下面把.py文件放在cgi-bin里
<Directory "D:/softsave/xamp/cgi-bin">
AllowOverride None
Options Indexes FollowSymLinks ExecCGI
Require all granted
Require host ip
</Directory>
2.去掉注释
3.在cgi-bin里的index.py内容为:
(记得第一行的地址要改成自己的python.exe地址)
#!D:/python/python.exe
# -*- coding: utf-8 -*-
print("Content-type:text/html\n\n")
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>')
4.运行apache
5. 访问链接:
http://localhost/cgi-bin/index.py
成功!
以下为问题记录:作者孤傲的小狼
接下来再说说我遇到报错坑:(大部分是在服务器启动的坑)
一、报错:Errors reported here must be corrected before the service can be started.
这句话的意思其实是:如果在这句话出现的时候,有错误的报告出来,那应该先解决这个错误。如果没有出现报错,就可以无视这句话,所以大家在看到这句话的时候,不必惊慌,没事
二、
报错:Errors reported here must be corrected before the service can be started.
(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 : AH00072: make_sock: could not bind to address [::]:443
(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 : AH00072: make_sock: could not bind to address 0.0.0.0:443
AH00451: no listening sockets available, shutting down
AH00015: Unable to open logs
通常看到这类错误,无疑,就是端口冲突
其实却是是端口冲突了,不过这回事443端口冲突,这是Apache里面的一些服务程序用的端口,意思是我们电脑上443端口已经被占用了,一般解决端口占用问题,有两种解决方法。
1、关掉占用端口的程序
先找到占用端口号的程序PID:netstat -ano|findstr “端口号”
再杀死进程:taskkill /pid {pid}
2、更改配置文件中端口配置,就443端口冲突我们来解决。
找到如下文件目录下:Apache24\conf\extra
更改以下两个文件:httpd-ahssl.conf和httpd-ssl.conf,有443的地方改掉,比如改为442。
还有一种低级错误,会造成端口冲突情况,那就是,重复启动该程序。
三、报错:You don't have permission to access /cgi-bin/hello.py on this server.
这种一般是配置文件出了问题,在设置访问权限的地方配错了,根据以上步骤2即可
四、报错:AH01215: Can't find a default Python.\r: D:/Apache24/cgi-bin/hello.py
报错意思是,没有找到默认的Python编译器,然后我就去看看py文件的路径有没有错,我发现没有错,然后我以为它默认通过系统path下去寻找,但是到系统环境变量里去看,也没错,那我就纳闷了,这不是有编译器吗。
然后才发现,确实是没找到解释器,因为我的python代码有错,print("")方法(千万别跟我一样大意了),需要加括号(),另外“\n\n”少了,这点要注意。
而上面的错误,就是通过查看日志文件得到的信息。Apache/logs/error.log。所以,建议大家,在调错时,要运用好日志文件,这是个很好的东西!