我使用以下配置编译了我的 Apache 版本:
./configure \
--prefix=/usr/local/apache2 \
--sysconfdir=/etc/apache2 \
--enable-so \
--enable-info \
--enable-session \
--enable-session-cookie \
--enable-lua \
--enable-luajit \
--enable-proxy \
--enable-mods-shared=all \
--with-included-apr
make
sudo make install
完成上述过程后,当我尝试启动服务器时
/usr/local/apache2/bin/apachectl -k start
我收到以下错误:
httpd: 第 136 行语法错误
/etc/apache2/httpd.conf
:无法加载modules/mod_session_cookie.so
到服务器:/usr/local/apache2/modules/mod_session_cookie.so
未定义符号:ap_hook_session_save
在检查httpd.conf
文件,我看到以下内容:
135 #LoadModule session_module modules/mod_session.so
136 LoadModule session_cookie_module modules/mod_session_cookie.so
137 LoadModule session_dbd_module modules/mod_session_dbd.so
其中数字表示文件中的行号。在取消注释行 #135并再次尝试显示:
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
我觉得没问题。但是服务器还没有启动。
apachectl -V
给出:
Server version: Apache/2.4.9 (Unix)
Server built: Apr 13 2014 22:48:17
Server's Module Magic Number: 20120211:31
Server loaded: APR 1.5.0, APR-UTIL 1.5.3
Compiled using: APR 1.5.0, APR-UTIL 1.5.3
Architecture: 32-bit
Server MPM: event
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/usr/local/apache2"
-D SUEXEC_BIN="/usr/local/apache2/bin/suexec"
-D DEFAULT_PIDLOG="logs/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="/etc/apache2/mime.types"
-D SERVER_CONFIG_FILE="/etc/apache2/httpd.conf"
答案1
问题与我的编译设置无关。服务器无法启动,因为我的 中注释了以下语句httpd.conf
:
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
取消上述注释即可解决该问题。
答案2
取消注释该行:
LoadModule session_module modules/mod_session.so
正在解决这个问题。@httpd-2.4.38
如果 mod_session.so 在 httpd.conf 中处于活动状态,则仍可加载 mod_session_cookie.so 和 mod_socache_shmcb.so