Python CGI导入MySQL模块触发Internal Server Error问题求助
解决Python CGI导入MySQL模块引发的Internal Server Error问题
一、修复脚本基础错误
- 移除无效Shebang行:脚本中
#!/usr/bin/mysql是错误的,Shebang只能指定Python解释器,保留第一行#!/usr/bin/python3即可。 - 修正导入语句:
import mysql不符合当前主流MySQL驱动的导入规范,需根据安装的驱动调整(比如官方驱动需写成import mysql.connector)。
二、安装正确的MySQL Python驱动
根据系统选择安装方式,必须用sudo执行,确保模块安装到Apache运行的全局Python环境中:
Debian/Ubuntu系
sudo apt-get update sudo apt-get install python3-mysql.connector # 或用pip安装 sudo pip3 install mysql-connector-python
RHEL/CentOS系
sudo yum install python3-mysql-connector # 或用pip安装 sudo pip3 install mysql-connector-python
三、验证模块可用性
切换到Apache运行用户(通常是www-data),确认模块能被识别:
sudo -u www-data python3 -c "import mysql.connector; print('模块可用')"
无报错则说明模块已被Apache的Python环境加载。
四、调整脚本权限
确保Apache用户能读取并执行脚本:
chmod 755 /var/www/html/getData.py chown www-data:www-data /var/www/html/getData.py
五、修正后的示例脚本
#!/usr/bin/python3 import cgi, cgitb import mysql.connector # 启用CGI调试,浏览器可直接查看错误详情 cgitb.enable() print("Content-Type: text/html\n") print("<html>") form = cgi.FieldStorage() first_name = form.getvalue('first_name') last_name = form.getvalue('last_name') print(f"Hello {first_name} {last_name}") # 数据库操作示例 try: conn = mysql.connector.connect( host='localhost', user='你的数据库用户名', password='你的数据库密码', database='你的数据库名' ) cursor = conn.cursor() insert_query = "INSERT INTO users (first_name, last_name) VALUES (%s, %s)" cursor.execute(insert_query, (first_name, last_name)) conn.commit() print("<p>数据插入成功</p>") cursor.close() conn.close() except Exception as e: print(f"<p>数据库操作失败: {str(e)}</p>") print("</html>")
内容的提问来源于stack exchange,提问作者user2011902
相关产品推荐
相关产品推荐

