Для нормальной работы сайта необходимо разрешить JavaScript, включая скрипты с доменов googlesyndication.com и doubleclick.net для отображения системы поиска по сайту и прочих сервисов Google.

Компиляция mod_fcgid в Visual Studio 2005 (Visual C++ 2005) под Apache 2.2.22 для Windows XP

Компиляция mod_fcgid в Visual Studio 2005 (Visual C++ 2005) под Apache 2.2.22 для Windows XP Бывает необходимо откомпилировать модуль mod_fcgid под разные версии Apache в ОС Windows XP. Когда знаешь, что, когда, чем, зачем и куда, то компиляция mod_fcgid в Visual Studio 2005 (Visual C++ 2005) под Apache 2.2.22 для Windows XP не составит особого труда.

Для компиляции mod_fcgid в Visual Studio 2005 (Visual C++ 2005) под Apache 2.2.22 для Windows XP нам понадобятся:

  • Исходный код модуля mod_fcgid (Win32, Netware or OS/2 Source with CR/LF line endings), версия 2.3.7 на данный момент:
  • Сам Apache 2.2.22 и его исходные коды:
    • httpd-2.2.22-win32-x86-openssl-0.9.8t.msi
    • httpd-2.2.22-win32-src.zip

Перед началом нам нужно загрузить и распаковать httpd-2.2.22-win32-src.zip исходные коды Apache 2.2.22, потом создать переменную (не обязательно системную) APACHE2_HOME в которой указать полный путь к корневому каталогу с исходными кодами Apache 2.2.22, например C:\HTTPD\v22x\src\httpd-2.2.22.

В зависимости от платформы под которой компилируется модуль mod_fcgid, в нашем случае под Windows XP, нужно переименовать файлы apr.hw и apu.hw в apr.h и apu.h соответственно:

\httpd-2.2.22\srclib\apr\include
apr.hw to apr.h
 
\httpd-2.2.22\srclib\apr-util\include
apu.hw to apu.h

Теперь для того чтобы не компилировать из исходных кодов библиотеки Apache 2.2.22, которые обязательно потребуются при компиляции модуля mod_fcgid, нам нужно предварительно установить или распаковать httpd-2.2.22-win32-x86-openssl-0.9.8t.msiи скопировать из корневого каталога установки каталог "lib" в корневой каталог с исходными кодами Apache 2.2.22 иначе под занавес компиляции получимLINK : fatal error LNK1181: cannot open input file 'libhttpd.lib'.


Извлекаем mod_fcgid-2.3.7-crlf.zip и запускаем файл "mod_fcgid.dsw", а так исходники проекта mod_fcgid-2.3.7-crlf заточены под Visual Studio 2006 то Visual Studio 2005 (Visual C++ 2005) спросит конвертировать ли файлы проекта под Visual Studio 2005 и мы соответственно отвечаем "Yes to all".

После конвертации и открытия проекта в Visual Studio 2005 выбираем "Project -> Properties -> Configuration properties -> C/C++ -> General" и в "Configuration manager -> Active solution configuration" выбираем "Release", после закрываем "Configuration manager" и в поле "Additional Include Directories" добавляем пути к библиотекам:

{pub}

 

{/pub} {reg}

$(APACHE2_HOME)\include
$(APACHE2_HOME)\srclib\apr\include
$(APACHE2_HOME)\srclib\apr-util\include
$(APACHE2_HOME)\os\win32
$(APACHE2_HOME)\modules\generators
$(APACHE2_HOME)\modules\http
$(APACHE2_HOME)\modules\filters

{/reg}

Теже самые пути добавляем и в "Project -> Properties -> Configuration properties -> Resources -> General -> Additional Include Directories" - это важно!, иначе можем получать ".\fcgid_conf.h(21) : fatal error RC1015: cannot open include file 'apr_general.h'."!

Дальше собственно сама компиляция по нажатии клавиши F7:

------ Build started: Project: mod_fcgid, Configuration: Release Win32 ------
Compiling...
mod_fcgid.c
fcgid_spawn_ctl.c
fcgid_protocol.c
fcgid_proctbl_win.c
fcgid_proc_win.c
fcgid_pm_win.c
fcgid_pm_main.c
fcgid_filter.c
fcgid_conf.c
fcgid_bucket.c
fcgid_bridge.c
Generating Code...
Compiling resources...
Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
Copyright (C) Microsoft Corporation. All rights reserved.
Linking...
Creating library .\Release/mod_fcgid.lib and object .\Release/mod_fcgid.exp
Embedding manifest...
Embed .manifest
Build log was saved at "file://c:\src\mod_fcgid-2.3.7\modules\fcgid\Release\BuildLog.htm"
mod_fcgid - 0 error(s), 0 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

Как результат компиляции mod_fcgid в Visual Studio 2005 (Visual C++ 2005) под Apache 2.2.22 для Windows XP мы получим каталог c:\src\mod_fcgid-2.3.7\modules\fcgid\Release с содержимым:

BuildLog.htm
fcgid_bridge.obj
fcgid_bucket.obj
fcgid_conf.obj
fcgid_filter.obj
fcgid_pm_main.obj
fcgid_pm_win.obj
fcgid_proctbl_win.obj
fcgid_proc_win.obj
fcgid_protocol.obj
fcgid_spawn_ctl.obj
mod_fcgid.exp
mod_fcgid.lib
mod_fcgid.obj
mod_fcgid.pdb
mod_fcgid.res
mod_fcgid.so
mod_fcgid.so.intermediate.manifest
mod_fcgid_src.idb
mod_fcgid_src.pdb
mt.dep

Из приведённого выше списка файлов нам нужен только mod_fcgid.so, ну и захватим на всяк случай файл mod_fcgid.pdb, каталог manual и справочные файлы CHANGES-FCGID, LICENSE-FCGID, NOTICE-FCGID, README-FCGID, STATUS-FCGID.

Если вы получаете ошибки типа:

ap_config.h(25) : fatal error C1083: 
    Cannot open include file: 'apr.h': No such file or directory
ap_config.h(26) : fatal error C1083: 
    Cannot open include file: 'apr_hooks.h': No such file or directory
.\fcgid_pm_win.c(18) : fatal error C1083: 
    Cannot open include file: 'apr_thread_proc.h': No such file or directory
apr_hooks.h(20) : fatal error C1083: 
    Cannot open include file: 'apu.h': No such file or directory
.\mod_fcgid.c(26) : fatal error C1083: 
    Cannot open include file: 'mod_cgi.h': No such file or directory
.\fcgid_proc_win.c(25) : fatal error C1083: 
    Cannot open include file: 'mod_core.h': No such file or directory
mod_cgi.h(29) : fatal error C1083: 
    Cannot open include file: 'mod_include.h': No such file or directory
.\fcgid_conf.h(21) : fatal error RC1015: 
    cannot open include file 'apr_general.h'.
LINK : fatal error LNK1181: cannot open input file 'libhttpd.lib'
 

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

Конфигурация Apache 2.2.22 для запуска PHP как FastCGI

Добавьте в свой httpd.conf такие строки:

LoadModule fcgid_module modules/mod_fcgid.so 
 
# Где находится ваш php.ini?
FcgidInitialEnv PHPRC "c:/php"
 
AddHandler fcgid-script .php 
FcgidWrapper "c:/php/php-cgi.exe" .php

Файлы с расширением .php должны будут запускаться с помощью оболочки PHP FastCGI. Подробнее о конфигурации модуля можно найти на официальной странице mod_fcgid

Заключение

Если у кого туго с компиляцией mod_fcgid 2.3.7 в Visual Studio 2005 (Visual C++ 2005) под Apache 2.2.22 для Windows, то можете удовлетворится модулем mod_fcgid-2.3.6-win32-x86.zip или если кому надо mod_fcgid 2.3.7, то пишите в комментарии мы выложим на файлообменник уже скомпилированный mod_fcgid 2.3.7 (mod_fcgid-2.3.7-win32-x86_httpd-2.2.22.zip) под Apache 2.2.22 для Windows.

Автор: Олег Головский

Рекомендуемый контент


Об авторе
АдМинь БагоИскатель
АдМинь БагоИскатель ярый борец за безглючную работу любых механизмов и организмов во всей вселенной и потому пребывает в вечном поиске всяческих багов, а тот кто ищет как известно всегда находит. Когда что-то или кого-то вылечить не в состоянии, то со словами "Я в аду, а вы все черти" уходит в запой выйдя из которого снова берётся лечить неизлечимое.
Ещё статьи автора

Комментарии   

Иван Шаман
0 #4 Иван Шаман 20.12.2012 15:17
Константин, мы рады, что статья была Вам полезна. Всегда готовы помочь, правда не всегда бесплатно.
Цитировать
Константин
0 #3 Константин 20.12.2012 13:06
Спасибо, воспользовался статьей,и скомпилировал необходимый файл. Ошибка ушла. Скомпилированны й файл выложил на
https://issues.apache.org/bugzilla/show_bug.cgi?id=51020
сославшись на Вас.
Цитировать
Олег Головский
0 #2 Олег Головский 18.12.2012 15:39
Добрый день Константин,
судя по данным сылкам у вас возникла проблема с работой mod_fcgid в среде пользователей "Active Directory" и как вам кажется перекомпиляция mod_fcgid с закомментирован ной строкой:
Цитата:
/* Fetch only required file details inode + device */
if ((rv = apr_stat(&finfo, path, APR_FINFO_IDENT cmd->temp_pool))
!= APR_SUCCESS
)
{
/* return missing_file_ms g(cmd->pool, "Wrapper", path, rv); */
}
якобы должна решить проблему?...

Вопервых не факт, что это решит вашу проблему. Вовторых вы хотябы потрудились указать путь к исходному файлу кода где находится вожделенная строка "return missing_file_ms g(cmd->pool, "Wrapper", path, rv);". А втретьих у нас нет на это свободного личного и процессорного времени!

Если нужно мы отправим на ваш почтовый адрес указанный в комменатирии версию mod_fcgid-2.3.7 -win32 под httpd 2.2 и/или httpd 2.4 скомпилированну ю в обычных стандартных условиях или же вам прийдётся малость раскошелится за компиляцию под ваши условия или же компилировать mod_fcgid самому...
Цитировать
Константин
0 #1 Константин 18.12.2012 14:34
Олег, добрый день. Выложите пожалуйста собранный билд 2.3.7 под win32-x86 с закоментированн ой строкой :

/* Fetch only required file details inode + device */
if ((rv = apr_stat(&finfo , path, APR_FINFO_IDENT ,
cmd->temp_pool) ) != APR_SUCCESS) {
/* return missing_file_ms g(cmd->pool, "Wrapper", path, rv); */
}



. К сожалению столкнулся с проблемой https://issues.apache.org/bugzilla/show_bug.cgi?id=51560 http://support.microsoft.com/kb/2018746
Цитировать

Добавить комментарий


Защитный код
Обновить

Рейтинг@Mail.ru 2 megabytes