【发布时间】:2020-04-26 11:45:14
【问题描述】:
我正在使用 CentOs 7 并且已经安装了 Apache2。我尝试使用 Python 3 运行 cgi 脚本。我有一个名为 index.py 的文件,其中包含以下代码:
#!/usr/bin/env python3.7
import platform
import pymysql
import cgitb
cgitb.enable()
print ("Content-type: text/html\r\n\r\n")
print ("<html>\n<body>")
print ("<div style=\"width: 100%; font-size: 40px; font-weight: bold; text-align: center;\$
connection = pymysql.connect(host='127.0.0.1', user='user', password='password', db='database', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor)
try:
with connection.cursor() as cursor:
sql = "SELECT * FROM Marken"
cursor.execute(sql)
rows = cursor.fetchall()
for row in rows:
print(row['ID'], row['markenName'], '</br>')
finally:
connection.close()
print ("Python Script Test Page", platform.python_version())
print ("</div>\n</body>\n</html>")
这会产生 500 内部服务器错误。
我在 apache httpd.conf 中添加了以下几行:
<Directory "/var/www/html/cgi">
Options +ExecCGI
AddHandler cgi-script .py
</Directory>
并使文件可访问
sudo chmod 755 var/www/html/cgi/index.py
因此,如果我注释掉所有 pymysql 代码并在浏览器中对其进行测试,它会打印出预期的 Python 测试页文本和 Python 平台版本 3.7.4。我什至无法导入 pymysql,因为它会出现服务器错误。使用 mysql.connector 我遇到了同样的问题。 如果我使用 pymysql 代码将脚本作为独立脚本运行,它在 shell 中可以正常工作。
我将我的系统配置为具有 sudo 访问权限的非 root 用户。这是问题吗?是否有任何环境变量需要设置?
我做错了什么?
【问题讨论】: