Назад | Перейти на главную страницу

Сервер 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. После этого скрипт запустился. Спасибо Jenny D за это.

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

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