#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# enable debugging
import cgitb
cgitb.enable()
print "Content-Type: text/plain;charset=utf-8"
print
print "Hello World!"
我的目标是用Python替换PHP。我对PHP非常好,我可以在我自己的本地机器上使用Python,但我不能让它在我的Web服务器上工作。我的网络主机说他们支持Python,所以我一定做错了。
现在,Python与CGI相关联。 python文件必须进入我的cgi-bin文件夹吗?我从未见过带有py扩展名或cgi扩展名的web文件,我不知道这些东西是如何工作的,我真的只熟悉PHP。
我看了谷歌“学习Python”课程的第一个小时,而且只讨论了在本地运行Python的问题。
:(对不起,我这么小,请修理我。
答案 0 :(得分:7)
这是一个完全可以接受的CGI脚本。如果你正在使用Apache,它将需要进入你的cgi-bin,需要是可执行的(我可能错了),你应该用语言.py
的公共扩展名来命名,或者用.cgi
。
如果您可以控制您的网络服务器将考虑CGI的文件,您可以将文件放在任何您想要的位置。机会是,你无法控制。您可以在此处查看有关Apache中CGI的更多信息:http://httpd.apache.org/docs/2.2/howto/cgi.html
基本要点是Apache不会将文件视为CGI文件,除非满足两个条件:cgi-script
需要使用AddHandler
或SetHandler
指令激活,并且需要在ExecCGI
指令中启用Options
。通常,共享托管环境中的用户无法使用此功能。
编辑:为了澄清,CGI只是一种机制,您可以用任意语言编写脚本,并让您的Web服务器执行它们并将该脚本的输出发送给您的客户端。除了一个简单的脚本之外,它不是推荐的方法,因为在每个请求中服务器都会启动一个新的解释器实例。对于Python,最佳解决方案是WSGI兼容框架,例如Flask,Bottle或Django。前两个是微框架,试图避开你的方式,而Django是一个提供大量粘合剂的全栈框架。
答案 1 :(得分:2)
Python做Web应用程序的方式与CodeIgniter或Cake PHP有更多共同之处。
从Django开始,只需尝试教程。来自顽固的PHP开发人员的关于Django的最常见的抱怨是Django不会让你混合代码和HTML - 这是一件好事。
当然你可以做普通的旧CGI,但这很难。
答案 2 :(得分:0)
根据您的网络托管公司,#!/ usr / bin / env python行可能需要以不同的方式阅读。一些包含“python”上的版本号,一些包含在不同目录中的python。您需要咨询您的提供商。
此外,您需要为文件提供世界执行(NOT write)权限,因为您希望人们执行脚本。
如果您在cgi-bin文件夹中上传带有.cgi或.py扩展名的代码,然后在浏览器中转到该代码,会发生什么?
另外,如果你谷歌“python cgi”你会发现很多教程。对于没有大量命中的简单东西,cgi可以正常工作,尽管正如其他人所说的那样,还有其他机制在需要时更有效率。
你不能在同一页面上混合使用python和html,但是有一些机制(参见python和服务器端包含或SSI)用于编写带有地标的html页面,该地标调用你的python程序并放置来自python的响应程序中显示的结果显示为html。