ОС: CentOS 7 / Apache: 2.4
Я обновляю машины и программное обеспечение, часть из которых включает обновление с Apache 2.2.x до Apache 2.4.x. Большая его часть работает нормально, включая сценарии PHP и простые файлы html, но у меня большие проблемы с попыткой запустить сценарии Perl cgi.
Временно, во время устранения неполадок, я отключил Selinux для httpd (сделал разрешающим: т.е. semanage permissive -a httpd_t), поэтому я знаю, что проблема не в этом.
Я пробовал множество вещей, но суть в том, что я ничего не могу запустить из / cgi-bin /. Этот конкретный сайт по устаревшим причинам находится не в / var / www /, а в / home / www / htdocs /, но я думаю, что это будет проблемой только для Selinux, который на данный момент отключен.
Итак, ниже приведен пример сообщений об ошибках, которые я получаю в журнале ошибок Apache:
AH01215: Can't open perl script "/home/www/htdocs/zac/cgi-bin/test.cgi": Permission denied
Я пробовал разные вещи, но в настоящее время у меня есть «apache» как владелец группы / cgi-bin / с разрешениями 777 и apache как владелец и группа скриптов с разрешениями 777. Скрипты очень простые, (просто напечатайте немного текста для проверки), и я уже удалил и повторно добавил верхнюю строку в каждом сценарии (например, #! / usr / bin / perl), чтобы убедиться, что там нет хитрых символов.
Я знаю, что некоторые синтаксисы в файлах conf отличаются в 2.4, но я думаю, что у меня все в порядке, см. Ниже:
<VirtualHost *>
DocumentRoot "/home/www/htdocs/zac/"
ServerName www.zacserver.pc
ServerAlias zacserver
ScriptAlias /cgi-bin/ "/home/www/htdocs/zac/cgi-bin/"
AddHandler cgi-script .cgi .pl
AddType application/x-httpd-php .html .php
<Directory "/home/www/htdocs/zac/">
AllowOverride all
Options ExecCGI Includes
Require all denied
Require ip 172.10 127.0.0.1
</Directory>
CustomLog "/var/www/sites/logs/zac_access.log" combined
ErrorLog "/var/www/sites/logs/zac_error.log"
</VirtualHost>
Как ни странно, если я помещаю сценарий test.cgi над каталогом cgi-bin в / zac /, он работает нормально. У меня даже есть другой каталог, cgi-test, с тем же владельцем и разрешениями, что и cgi-bin, с тем же сценарием и разрешениями, и он там тоже отлично работает; но ничего не работает из самого / cgi-bin.
Строка ScriptAlias в приведенном выше файле conf я также попробовал удалить кавычки и перезапустить, но без эффекта. (не то, чтобы я ожидал такого).
Итак, я как бы изо всех сил пытаюсь найти что-нибудь еще, на что я мог бы взглянуть, поскольку разрешения кажутся прекрасными, сценарии в порядке, и, насколько я знаю, конфигурация conf тоже в порядке. Сводит меня с ума!
Любая помощь будет принята с благодарностью. Я чувствую, что это должно быть что-то довольно простое, но решение ускользает от меня.
Обновить: Впоследствии я получил эту работу, изменив контексты файлов обратно с httpd_sys_script_exec_t на httpd_sys_content_t с помощью restorecon. Понятия не имею, почему это должно работать, поскольку я полагал, что должно быть наоборот.
Впоследствии я получил эту работу, изменив контексты файлов обратно с httpd_sys_script_exec_t на httpd_sys_content_t с помощью restorecon. Понятия не имею, почему это должно работать, поскольку я решил, что должно быть наоборот.
У вас не может быть разрешений широко, Apache считает, что это угроза безопасности! Попробуйте 755.