#!/usr/bin/env python
import MySQLdb
print "Content-Type: text/html"
print
print "<html><head><title>Books</title></head>"
print "<body>" print "<h1>Books</h1>"
print "<ul>"
connection = MySQLdb.connect(user='me', passwd='letmein', db='my_db') cursor = connection.cursor() cursor.execute(“SELECT name FROM books ORDER BY pub_date DESC LIMIT 10”)
for row in cursor.fetchall():
print "<li>%s</li>" % row[0]
print "</ul>"
print "</body></html>"
connection.close()
我将它保存为test.cgi到我的网络服务器。我通过www.mysite.com/test.cgi运行它失败了
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
你怎么解决这个问题?
第一个答案后[edit]
[edit]
因为你,你得到了这个错误 没有安装MySQLdb模块 Python需要与MySQL通信 数据库
我将MySQLdb安装到我的系统中。该模块有效,因为我可以导入它们。 但是,当我转到www。[mysite] .com / test.cgi时,我仍然得到同样的错误。
[编辑]
我不确定问题
connect()参数是否正确? MySQL是否在localhost上运行 在默认端口?
我在我的服务器上运行MySQL。关于connect()参数的问题是否与此相关?
SELECT语句是否正确?
你是说我的SELECT语句之类的SQL语句是否正确? 我还没有使用任何SQL查询。 我在这需要吗?
答案 0 :(得分:2)
通过在必要时插入换行符并用"
和'
替换智能引号,我已经整理了一些代码。以下是否还有运气?您只需输入python test.cgi
吗?
#!/usr/bin/env python
import MySQLdb
print "Content-Type: text/html"
print
print "<html><head><title>Books</title></head>"
print "<body>"
print "<h1>Books</h1>"
print "<ul>"
connection = MySQLdb.connect(user='me', passwd='letmein', db='my_db')
cursor = connection.cursor()
cursor.execute("SELECT name FROM books ORDER BY pub_date DESC LIMIT 10")
for row in cursor.fetchall():
print "<li>%s</li>" % row[0]
print "</ul>"
print "</body></html>"
connection.close()
答案 1 :(得分:2)
任何问题都可能导致您看到的错误:
test.cgi
可执行文件(chmod 755)吗?test.cgi
指定为ScriptAlias位置的目录或启用了ExecCGI选项的目录(或者如果您不使用Apache,则等效)?python
或网络服务器启动环境中的PATH
是PATH
吗?connect()
参数是否正确? MySQL是否在默认端口的localhost上运行?SELECT
声明是否正确?如果您确定找到了python
(使用最简单的脚本进行测试,或者如果可以并且键入which python
则登录Web服务器),那么您可以通过以下方式获得更好的调试输出将以下内容添加到shebang正下方的脚本顶部:
import cgitb
cgitb.enable()
更多详情:http://docs.python.org/library/cgitb.html
此外,如果您具有对Web服务器的shell访问权限,请尝试运行python并输入:
>>> import MySQLdb
如果命令返回时没有错误,则表示您已获得上述#4的答案。如果打印错误,则需要将MySQLdb安装到Web服务器的Python安装中。
编辑:仔细查看问题的顶部,我看到代码是从Django Book开头的一个说明性示例中删除的。因此,我可能会扩展上面的#5以包含警告,当然,需要在Web服务器可用的MySQL安装上设置必需的数据库,表,用户和权限。
答案 2 :(得分:1)
http://dpaste.com/8866/中的错误正在发生,因为您使用的是“引号”而不是标准的ASCII引号。
您需要将“和”替换为“。只需在文本编辑器中使用查找和替换。
答案 3 :(得分:0)
确保使用正确的行结尾保存文件。即仅在unix上使用LF,或在Windows上使用CR / LF。我刚刚遇到了同样的问题......