Сервер Apache2 не выполняет сценарий CGI

У меня есть локальный сервер Apache2 (установлен с LAMP). Каталог Apache2 /etc/apache2 и мой корень документа /var/www, Под корнем документа есть /cgi-bin каталог, в котором мой скрипт cgi.pyявляется. Выполнение с ./cgi.py дает желаемый результат, но когда я указываю моему веб-браузеру на файл, он предлагает мне скачать его. Видимо это часто связано с проблемой доступа, но после добавления a+x разрешения на файл проблема остается.

Вот простой скрипт:

#!/usr/bin/python3
# -*- coding: UTF-8 -*-

#enable debugging
import cgitb
cgitb.enable()

print("Content-Type: text/plain;charset=utf-8");
print()

print("Hello World!");

В каталоге apache2 httpd.conf Я добавил следующее (до него было пусто):

ScriptAlias /cgi-bin/ /var/www/cgi-bin/
<Directory /var/www/cgi-bin/>
    Options ExecCGI
    AddHandler cgi-script .cgi .py
</Directory>

В чем может быть причина того, что скрипт не будет выполнен?

РЕДАКТИРОВАТЬ: Ошибка новичка, я не перезагружал сервер после внесения изменений в httpd.conf, После этого скрипт выполняется. Спасибо Дженни Ди за предложение.

1 ответ

Решение

Сервер будет читать свой файл конфигурации только при запуске или когда вы специально скажете ему перезагрузить его. После изменения httpd.conf вам необходимо либо перезагрузить сервер, либо перезагрузить конфигурацию (либо запустив apachectl restartили запустив service httpd reloadили что-то еще в зависимости от вашей операционной системы / настройки).

Если вы хотите, чтобы конфигурация была перечитана без перезапуска сервера, есть htaccess. Однако, поскольку это означает, что apache будет перепроверять файл для каждого соединения, это немного замедлит работу сервера. Будет ли это проблемой, конечно, будет зависеть от того, насколько велика нагрузка на сервер.

Другие вопросы по тегам