Я создал переносимую установку Apache (относительные пути). Он отлично работает в моей 32-битной системе, но когда я пытаюсь запустить его в 64-битной системе, выдает следующую ошибку:
>httpd -t
httpd: Syntax error on line … of …/httpd.conf: Cannot load …/modules/mod_ssl.so into server: %1 is not a valid Win32 application.
Если я закомментирую строку, включающую SSL.conf
, то сервер работает в 64-битной системе, но, конечно, без поддержки SSL.
Я пытался найти это, но не нашел ничего полезного. Кто-нибудь знает, как заставить Apache использовать SSL в 64-битной системе (желательно таким образом, чтобы это было совместимо с 32-битной системой)?
С помощью Монитор процесса, Я наблюдал за доступом к файлам и записям реестра, которые Apache делает при загрузке.
Я заметил, что httpd
загружает файл libeay32.dll
в конце трассировки (непосредственно перед ошибкой). Я пробовал поставить копию libeay32.dll
из 64-битный пакет Apache Я получил из ApacheLounge в Apache bin
каталог, но по-прежнему выдает ту же ошибку. (Полагаю, это не должно быть сюрпризом, потому что файл, который он ранее загружал, был уже 64-битной копией из какой-то папки, которая находится в PATH
- где установлен один из 64-битных драйверов ноутбука.)
Затем я поставил 32-битный копия libeay32.dll
(и ssleay32.dll
) что я получил из стандартного пакета, et voilà! Apache работает с поддержкой SSL в 64-битной системе! Более того, поскольку копия libeay32.dll
32-битный, он по-прежнему работает в 32-битной системе без модификации (т.е. никакого обнаружения системы и замены файлов или даже взлома conf-файла)!
(Я рад, что поместил сообщение об ошибке в заголовок вопроса, потому что, надеюсь, это поможет направить других, решивших эту проблему, с которой я боролся несколько месяцев, на эту страницу, где они, наконец, смогут найти решение. ☺)
У нас есть 64-битный mod_jk.so, который можно скачать с Вот по версии. Надеюсь, это поможет.