CGI не выполняет Python - 500 внутренняя ошибка сервера - PullRequest
3 голосов
/ 05 января 2011

У меня есть несколько скриптов Python, которые я хотел бы выполнить, и следующая конфигурация: Ubuntu 10.04, Apache2, Python 2.6, mod_python и mod_wsgi установлены.

Я следовал инструкциям на следующих сайтах:

http://bytes.com/topic/python/answers/474462-apache-python-ubuntu

http://apache.active -venture.com / CGI-configure.html

http://modpython.org/live/current/doc-html/inst-testing.html

http://code.google.com/p/modwsgi/wiki/QuickInstallationGuide

http://wiki.apache.org/httpd/DistrosDefaultLayout

Файл по умолчанию на сайтах-доступен:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>

    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AddHandler mod_python .py
            AddHandler cgi-script .cgi py
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

Я получаю 500 внутренняя ошибка сервера. Я также изменил права доступа к файлам на 755

В py-файлах просто печатается текст, который должен появиться на странице. Что я должен делать? Спасибо

[править]: Обновление, оно связано с ошибками в py-файле журнал ошибок показан ниже.

Traceback (most recent call last):
  File "/usr/lib/cgi-bin/amissa2.py", line 80, in <module>
    zoom_factor = int(parms.getfirst('zoom')) * int(parms.getfirst('zsize'))
TypeError: int() argument must be a string or a number, not 'NoneType'

Кажется, это ошибка при преобразовании из None в int, здесь:

zoom_factor = int(parms.getfirst('zoom')) * int(parms.getfirst('zsize'))

Любой намек на то, как это может быть сделано такое преобразование?

Ответы [ 2 ]

1 голос
/ 05 января 2011

Если parms.getfirst ('zoom') или parms.getfirst ('zsize') возвращают None, вы, вероятно, не указали их в своем URL-адресе (не знаю, что это за параметры, просто предположите).Определите поведение, которое вы хотите, когда они отсутствуют (будет ли это означать увеличение «0», или, поскольку вы умножаете, «1» имеет больше смысла?).

Затем создайте свою собственную функцию преобразования, которая знает, как преобразовать None в int (в зависимости от вашего определенного поведения), и вызовите ее вместо int ().

def convert(value):
   if value is None:
      return 0 # or 1, or whatever
   else:
      return int(value)
1 голос
/ 05 января 2011

Вы не загружаете модуль wsgi.

LoadModule wsgi_module modules/mod_wsgi.so

Также вам нужен только mod_wsgi ИЛИ mod_python Не обоим, если у вас нет особой необходимости.

...