Apache2 не будет запускать файлы cgi на основе shebang

Более новые версии ipмогут выводить данные в формате JSON с параметром -j, которые затем можно обрабатывать с помощью фильтра, такого как jq. Например, это напечатает адрес IPv4 на интерфейсе eth0:

.
$ ip -j addr show dev eth0 | jq -r '.[0].addr_info | map(select(.family == "inet"))[0].local'
192.168.0.1

Или получить список всех IPv4-адресов на машине, по одному в строке:

ip -j addr show | jq -r 'map(.addr_info) | map(map(select(.family == "inet").local)) | flatten |.[]'
127.0.0.1
192.168.0.1
172.19.0.1
172.17.0.1
172.18.0.1

Удалите select(...), чтобы включить, например, адреса IPv6. Возможны многие другие вариации.

0
16.05.2020, 14:01
1 ответ

Ваша установка Apache выглядит так, как будто она установлена ​​в Debian, а в моей системе serve-cgi-bin.confуже включена, т. е. есть символическая ссылка с /etc/apache2/conf-enabled/serve-cgi-bin.confпо ../conf-available/serve-cgi-bin.conf.

Если символическая ссылка отсутствует на вашем система, запустить

sudo a2enconf serve-cgi-bin

Вам не нужно раскомментировать строку в 000-default.conf.

Файл выглядит так:

$ cat /etc/apache2/conf-available/serve-cgi-bin.conf
<IfModule mod_alias.c>
        <IfModule mod_cgi.c>
                Define ENABLE_USR_LIB_CGI_BIN
        </IfModule>

        <IfModule mod_cgid.c>
                Define ENABLE_USR_LIB_CGI_BIN
        </IfModule>

        <IfDefine ENABLE_USR_LIB_CGI_BIN>
                ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
                <Directory "/usr/lib/cgi-bin">
                        AllowOverride None
                        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                        Require all granted
                </Directory>
        </IfDefine>
</IfModule>

Каталог cgi — /usr/lib/cgi-bin, переместите исполняемый файл в этот каталог. Нужно включить мод _cgi или мод _cgid , возьмем первый и перезапустим сервер.

sudo a2enmod cgi
sudo systemctl restart apache2

Перейдите по адресу http ://localhost/cgi -bin/test.cgi и вы увидите сообщение «TEST».

Если вы хотите использовать другой каталог или другой путь ScriptAlias, вы можете отключитьserve-cgi-bin.conf(sudo a2disconf serve-cgi-bin)и скопировать содержимое serve-cgi-bin.confв свой VirtualHostи при необходимости изменить расположение.

0
28.04.2021, 23:15

Теги

Похожие вопросы