Столкнулся сегодня с проблемой: переменные, установленные через SetEnv в апаче не видны в cgi-скриптах.
Поиски произростания ног привели к suEXEC, который фильтрует набор переменных окружения. И, естественно, в списке разрешенных нет ничего про AWSTATS_FORCE_CONFIG.
Проблему решил следующим образом:
wget http://svn.apache.org/repos/asf/httpd/httpd/trunk/support/suexec.{c,h}
Далее в suexec.c находим внутри большой список переменных, и добавляем туда то, что нужно:
77a78
> "AWSTATS_FORCE_CONFIG=",
И собираем получившееся такой командой (при условии что установлены пакеты apache2-threaded-dev и build-essential):
-DAP_DOC_ROOT='"/var/www"' \
-DAP_GID_MIN=100 \
-DAP_HTTPD_USER='"www-data"' \
-DAP_LOG_EXEC='"/var/log/apache2/suexec.log"' \
-DAP_SAFE_PATH='"/usr/local/bin:/usr/bin:/bin"' \
-DAP_UID_MIN=100 \
-DAP_USERDIR_SUFFIX='"public_html"' \
-I/usr/include/apr-1.0 \
-I/usr/include/apache2 \
-o suexec suexec.c && chmod 4755 suexec
В убунту надо будет заменить получившимся бинарником враппер /usr/lib/apache2/suexec.
PS: да, для того чтоб у пользователя работал awstats при suexec, который ставит ограничение на скрипты в /var/www, да еще и разыменовывает симлинки, достаточно в cgi-bin создать простейший враппер (awstats.pl):
Хотя можно (по идее!) в AP_DOC_ROOT прописать ‘”/var/www,/usr/lib/cgi-bin”‘.
PS2: в списке разрешенных переменных окружения можно задавать множества – например, “AWSTATS_”.
PS3: посоветовал бы кто-то настраиваемую замену для злого suEXEC – у него-то все опции при компиляции задаются.
Leave a Reply