Ошибка установки 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#
7 ответов
Насколько я помню была какая-то ошибка с 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
Почти наверняка это связано с тем, что Apache изменил имя API unixd_config на ap_unixd_config в v2.4.x
http://httpd.apache.org/docs/2.4/developer/new_api_2_4.html
Я боролся с этим, пытаясь заставить его работать с mod_fastcgi 2.4, я даже пытался редактировать 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, но у метода "new & улучшенный", использующего mod_proxy_fcgi с php fpm, есть все виды проблем, таких как нежелание играть хорошо с псевдонимами:(
Попробуйте проверить libtool, установленный в /usr/local/apache2/bin/ и установленный в вашей системе, они могут быть разных конфликтующих версий.
Серьезно нет причин использовать этот неподдерживаемый сторонний модуль.
Либо используйте предоставленный apache mod_fcgid, либо новый модуль mod_proxy_fcgi.