Команда Sqlite3 работает в командной строке Python, но не в CGI - PullRequest
0 голосов
/ 02 мая 2019

Я вставляю значения в таблицу sqlite3 в оболочке Python (работает хорошо), но не в сценарии CGI.

#!/usr/bin/python3
import cgi,cgitb
import sqlite3


cgitb.enable()

print('Content-type: text/html\r\n\r\n')
print('<html>')
print('<head><title>Registration</title></head>')
print('<body>')

form = cgi.FieldStorage()
if form.getvalue('name'):
    name=str(form.getvalue('name'))
else:
    name=None
if form.getvalue('email'):
    email=str(form.getvalue('email'))
else:
    email=None
if form.getvalue('password'):
    password=str(form.getvalue('password'))
else:
    password=None

try:
    con = sqlite3.connect('users.db')
    cur=con.cursor()
    val=(name,email,password)
    with con:
            sql='''INSERT OR REPLACE INTO USER_INFO(NAME,EMAIL,PASSWORD) VALUES(?,?,?)'''
            cur.execute(sql, val)
    con.commit()

    htmlf='''<html><title>Registration</title><body><p>Account {email} Stored in Record</p></body></html>'''
    print(htmlf.format(email=email))
    con.commit()

except sqlite3.Error:
    if con:
           con.rollback()
con.close()

print("<form method='post' action='h.py'>")
print("<p>Registration</p>")
print("<p>Enter Name: <input type='text' name='name' /></p>")  
print("<p>Enter E-mail ID: <input type='text' name='email' /></p>")
print("<p>Enter Password:<input type='password' name='password' /></p>")
print("<input type='submit' value='Submit' />")
print("</form>")
print("</body>")
print("</html>")

Если я использую оболочку python для вставки значений, то она работает нормально. Но не в скрипте CGI Я изменил режим файла базы данных sqlite3 на 777 и поместил базу данных в тот же каталог этого файла Python CGI. Ничего не работает

После того, как я нашел проблему в каталоге базы данных и в файле базы данных. Используя эту команду,

chgrp www-data databasedir chgrp www-data databasedir/mydb.db chmod g+w databasedir chmod g+w databasedir/mydb.db

Работает нормально

Я сомневаюсь, почему команда insert sqlite3 работала в оболочке python (путь к каталогу базы данных cd как суперпользователь) и работала в сценарии cgi, но после изменения разрешения базы данных Любая помощь, спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...