Потратил некоторое время на решение проблемы — вдруг кому пригодится.
Нужно было поставить такую связку (suPHP для Apache версии 2.2) на сервере с Gentoo Linux. Во-первых, www-apache/mod_suphp-0.6.1-r2 оказался masked, но это не проблема:
echo '=www-apache/mod_suphp-0.6.1-r2'>> /etc/portage/package.keywords echo '=www-apache/mod_suphp-0.6.1-r2'>> /etc/portage/package.unmask emerge -av =www-apache/mod_suphp-0.6.1-r2
Однако во время компиляции все счастье вывалилось с:
!!! ERROR: www-apache/mod_suphp-0.6.1-r2 failed.
!!! Function src_compile, Line 104, Exitcode 2
!!! make failed
Взял исходники оригинального с http://www.suphp.org/Download.html, распаковал, сконфигурил и запустил сборку:
./configure --with-apache-user=root --with-setid-mode=owner --with-apxs=/usr/sbin/apxs2 --with-apr=/usr/bin/apr-1-config --prefix=/usr make
Вылезла та же проблема. Оказалось, что suPHP формально не поддерживает Apache 2.2.
Цитата с http://www.suphp.org/FAQ.html
Dows suPHP work with Apache 2.2? No, Apache 2.2 uses a slightly different API that does not provide some functions required by suPHP, so the module code will have to be adapted to work with his version of Apache.
Начал искать решения проблемы — нашел какие-то сомнительные патчи, но они не помогли, а потом наткнулся на http://packages.debian.org/unstable/source/suphp
Увидев в зависимостях apache2-mpm-prefork (>= 2.2.0), порадовался. Скачал suphp_0.6.1.20061108.orig.tar.gz, повторил операции и… о чудо! Собралось без проблем. Начинаю тестирование ;-)
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
Исправленные опции ./configure стали выглядеть так:
В качестве основы конфига (/etc/suphp.conf) можно брать файл doc/suphp.conf-example или прямо вытаскивать из портежа: /usr/portage/www-apache/mod_suphp/files/suphp.conf
Кроме того, хорошую помощь оказал еще один конфиг из портежа: /usr/portage/www-apache/mod_suphp/files/70_mod_suphp.conf
Его я тупо скопировал в каталог /etc/apache2/modules и слегка подредактировал по вкусу.
Далее. ВАЖНО, чтобы был собран не только php-cli, но php-cgi. На сервере, где ставил я, собрано было без cgi, и я очень долго не мог понять, в чем проблема: при обращении к любому php-скрипту браузер выдавал ошибку 500 Internal server error, а в /var/log/apache2/error_log добавлялись строчки:
Вновь помог http://www.suphp.org/FAQ.html
Решилось, соответственно, пересборкой php:
Решиться-то решилось, но от проблемы не избавило. И еще возникло подозрение, что файл /etc/suphp.conf банально игнорируется.
Продолжение, вероятно, следует…
А вот и продолжение…
Проблема невозможности сборки suphp из портежа наконец-то решилась. Откатом к APR из ветки 0.x (0.9.12). APR 1.2.x стояла для Apache 2.2. Apache 2.2 с APR 0.x не собирается, приходилось после установки APR 1.2.x делать:
И аналогично Apache-2.2 была нужна APU-2.2 (apr-util).
Для нормальной сборки suphp удалять APR 1.x не надо: достаточно символическую ссылку apr-config вернуть на apr-1-config. Иногда еще возникают танцы с бубнами вокруг /usr/include/apr-0, /usr/include/apr-1 и /usr/include/apache2. Изменять по вкусу, а точнее — по требованиям собираемых пакетов.
Собраться-то собралось, но при запуске apache 2.2 с таким suphp, web-сервер начинает падать с Segmentation fault. Подозреваю, из-за того, что apache-2.2 собран с apr-1.2, а модуль к нему (mod_suphp.c) — с apr-0.9.
Собрался я было править исходники suPHP, чтобы проблему решить, зашел опять на suphp.org… А там:
suPHP 0.6.2 released
[..]
Features / improvements:
* Apache 2.2 compatibility
* (Basic) mod_userdir support
Hallelujah, товарищи. Как проверю функционирование, доложу.
Сделал свой ebuild к 0.6.2 по мотивам аналогичного к 0.6.1-r2. Собралось все нормально. Но не помогло :-\
Откатываемся на Apache-2.0…