- 已經安裝: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。所以,建議大家,在調錯時,要運用好日誌文件,這是個很好的東西!