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

ошибка установки mod_fastcgi

Я успешно скомпилировал Apache 2.4.2, но я столкнулся с ошибкой при попытке скомпилировать модуль mod_fastcgi.

Какие-нибудь советы?

root@local:/usr/src/libapache-mod-fastcgi# /usr/local/apache2/bin/apxs -o mod_fastcgi.so -c *.c
/usr/local/apr/build-1/libtool --silent --mode=compile gcc -std=gnu99 -prefer-pic   -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -g -O2 -pthread -I/usr/local/apache2/include  -I/usr/local/apr/include/apr-1   -I/usr/local/apr/include/apr-1   -c -o fcgi_buf.lo fcgi_buf.c && touch fcgi_buf.slo
/usr/local/apr/build-1/libtool --silent --mode=compile gcc -std=gnu99 -prefer-pic   -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -g -O2 -pthread -I/usr/local/apache2/include  -I/usr/local/apr/include/apr-1   -I/usr/local/apr/include/apr-1   -c -o fcgi_config.lo fcgi_config.c && touch fcgi_config.slo
fcgi_config.c: In function 'fcgi_config_set_fcgi_uid_n_gid':
fcgi_config.c:241: error: 'unixd_config' undeclared (first use in this function)
fcgi_config.c:241: error: (Each undeclared identifier is reported only once
fcgi_config.c:241: error: for each function it appears in.)
fcgi_config.c: In function 'fcgi_config_make_dir':
fcgi_config.c:345: error: 'unixd_config' undeclared (first use in this function)
fcgi_config.c: In function 'fcgi_config_new_static_server':
fcgi_config.c:782: warning: initialization from incompatible pointer type
fcgi_config.c:782: error: expected expression before ')' token
fcgi_config.c:782: warning: passing argument 5 of 'ap_log_error_' makes integer from pointer without a cast
/usr/local/apache2/include/http_log.h:372: note: expected 'apr_status_t' but argument is of type 'struct server_rec *'
fcgi_config.c: In function 'fcgi_config_new_external_server':
fcgi_config.c:975: warning: initialization from incompatible pointer type
fcgi_config.c:975: error: expected expression before ')' token
fcgi_config.c:975: warning: passing argument 5 of 'ap_log_error_' makes integer from pointer without a cast
/usr/local/apache2/include/http_log.h:372: note: expected 'apr_status_t' but argument is of type 'struct server_rec *'
apxs:Error: Command failed with rc=65536
.
root@local:/usr/src/libapache-mod-fastcgi#

почти наверняка это связано с тем, что Apache изменил unixd_config имя API для ap_unixd_config в v2.4.x

http://httpd.apache.org/docs/2.4/developer/new_api_2_4.html

Я боролся с этим, пытаясь заставить его 2.4 работать с mod_fastcgi, я даже попытался отредактировать fcgi.h (единственные ссылки на unixd_config, которые я смог найти в исходных файлах mod_fastcgi), чтобы добавить

#define unixd_config ap_unixd_config

или иначе переименуйте все ссылки на unixd_config, но ни один из них не работал.

Я начинаю задаваться вопросом, могут ли также быть ссылки на unixd_config в пакетах apr / apr-devel, поскольку они необходимы для компиляции mod_fastcgi, и мне пришлось найти более новую версию (я считаю, 1.4.6, поскольку yum устанавливает старую 1.3 .9) и поместите их в папку srclib исходного кода apache 2.4.3, чтобы он скомпилировался без ошибок (как показано здесь: http://www.thegeekstuff.com/2012/05/install-apache-2-on-centos-6/)

Это действительно расстраивает, потому что я хочу apache 2.4, но не хочу запускать php как mod_php, но метод «новый и улучшенный», использующий mod_proxy_fcgi с php fpm, имеет всевозможные проблемы, такие как нежелание играть хорошо с псевдонимами :(

Насколько я помню, была какая-то ошибка с mod_fastcgi и Apache 2.4. Только что проверил версию 2.2 и она отлично компилируется. Не могу найти отчет об ошибке.

Я нашел ответ по этой ссылке: http://leeon.me/a/apache-2.4-install-mod_fastcgi (Я говорю по-испански, мне нужно было "читать" по-китайски)

Вы можете выполнить следующее, чтобы выполнить желаемое (проверьте свои пути, я использую макет RPM):

time (wget 'http://www.fastcgi.com/dist/mod_fastcgi-SNAP-0910052141.tar.gz' &&
tar -zxvf mod_fastcgi-SNAP-0910052141.tar.gz &&
cd mod_fastcgi-SNAP-0910052141 &&
cp Makefile.AP2 Makefile &&
wget http://leeon.me/upload/other/byte-compile-against-apache24.diff &&
patch -p1 < byte-compile-against-apache24.diff &&
make top_dir=/usr/lib/httpd/ && make install top_dir=/usr/lib/httpd/)

Руководство ...

nano /etc/httpd/conf/httpd.conf/httpd.conf
LoadModule fastcgi_module lib/httpd/modules/mod_fastcgi.so

У вас установлены не все зависимости.

Попробуйте проверить libtool, установленный в / usr / local / apache2 / bin / и установленный в вашей системе, они могут иметь разные конфликтующие версии.

Нет никаких причин для использования этого неподдерживаемого стороннего модуля.

Либо используйте предоставленный apache mod_fcgid, либо новый модуль mod_proxy_fcgi.