py mysql не работает в python cgi - PullRequest
1 голос
/ 26 апреля 2020

Я использую CentOs 7 и уже установлен Apache2. Я пытаюсь запустить скрипт cgi с Python 3. У меня есть файл 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.

I добавили следующие строки в apache httpd.conf:

<Directory "/var/www/html/cgi">
    Options +ExecCGI
    AddHandler cgi-script .py
</Directory>

и сделали файл доступным через sudo chmod 755 var/www/html/cgi/index.py

Так что, если я закомментирую весь код py mysql и протестирую его в браузере выводится ожидаемый текст Python Test Page и версия платформы python 3.7.4. Я даже не могу импортировать py mysql, так как это выдает ошибку сервера. С mysql .connector у меня была такая же проблема. Если я запускаю скрипт как автономный скрипт с кодом py mysql, он нормально работает в оболочке.

Я настраиваю свою систему как пользователь не root с доступом sudo. Это проблема? и могут ли быть установлены какие-либо переменные окружения?

Что я делаю не так?

1 Ответ

0 голосов
/ 26 апреля 2020
<VirtualHost *:80>

    <Directory "/var/www/html/cgi">

        Options +ExecCGI

        DirectoryIndex index.py

    </Directory>

    AddHandler cgi-script .py

    DocumentRoot /var/www/html/cgi

</VirtualHost>

в apache разделе конфигурации, который вы пропустили, чтобы определить индекс каталога для файла python. также определите Document Root, чтобы индексный файл python мог указывать правильный путь. на основании документации вам необходимо исключить обработчик из каталога.

...