admin管理员组文章数量:1516870
Apache常见问题及解决方案汇总
在使用Apache服务器的过程中,我们可能会遇到各种各样的问题。本文将为大家详细介绍一些常见的Apache问题,并提供相应的解决方案。
1. Apache问题报告结构
Apache的问题报告包含多个重要字段,这些字段有助于我们准确地描述和定位问题。以下是问题报告中各字段的详细说明:
| 字段 | 意义 |
| ---- | ---- |
| Number | 报告跟踪编号 |
| URL | 完整报告的网络位置 |
| Synopsis | 问题的简要描述 |
| Responsible | 问题所在的模块或组件 |
| Class | 错误类型 |
| Arrival - Date | Apache收到报告的日期 |
| Closed - Date | Apache团队关闭报告的日期 |
| Originator | 发现问题的个人或组织 |
| Release | 受问题影响的Apache版本 |
| Environment | 问题出现的环境 |
| Description | 对问题的详细讨论 |
2. 常见问题及解决方案
2.1 8192字符串漏洞问题
- 问题描述 :攻击者可以发送一个8192字符的字符串,使服务器进入空闲状态,在某些情况下,继续发送字符串会导致服务器崩溃。此问题出现在Win32、WinNT、2000、OS/2系统中,版本早于1.3.20。
- 解决方案 :该问题已在1.3.20版本中修复,建议将Apache升级到1.3.20或更高版本。
2.2 Apache服务器无法启动问题
-
问题描述
:在简单的Win95 PC工作站上,使用1.3.14版本的Apache时,出现
setup_inherited_listeners: WSASocket failed to open the inherited socket错误。可能的原因包括使用了过时的DLL文件(如wsock32.dll、ws2help.dll和ws2_32.dll)、使用了VPN软件(如Aventail),最可能的问题是Winsock分发版本过时,此问题也影响1.3.9版本。 - 解决方案 :升级Winsock分发版本。
2.3 CGI脚本无法运行问题
- 问题描述 :在Windows 95环境下,1.3.14版本的Apache中,CGI脚本、编译的COM和EXE文件、C程序、Fortran程序以及DOS批处理文件在命令行中可以运行,但通过客户端请求无法执行。这是因为处理CGI流的管道无法正确打开或关闭。
- 解决方案 :将Apache升级到更高版本。
2.4 Apache冻结无响应问题
-
问题描述
:在Dual PII 450 MHz + SCSI的WinNT4.0 SP6A环境中,使用1.3.12版本的Apache时,
error_log中出现[notice] jrApache[1023] [1156] dropped记录,随后Apache崩溃。此问题并非Apache核心问题,而是与JRun有关,JRun是一个允许ISAPI启用的服务器执行Java Servlet的服务器扩展。 - 解决方案 :若需要使用Java Servlet功能,可访问 了解JRun相关信息。
2.5 JSP技术问题
- 问题描述 :在Linux Mandrake 7.0(内核2.2.15 - 4mdk)环境中,使用1.3版本的Apache,用户想在不使用Tomcat的情况下在Mandrake服务器上运行JSP。但Mandrake的Apache高度定制,支持许多非标准功能,Apache官方无法提供帮助。
- 解决方案 :遇到此问题时,联系Mandrake寻求支持。
2.6 mod_auth_digest错误请求问题
-
问题描述
:在Linux Slackware环境中,1.3.14版本的Apache,当URI中出现查询字符串(如使用JSP时),
mod_auth_digest会报错,报告错误请求。 -
解决方案
:在
authenticate_digest_user中禁用查询比较支持。
2.7 无法上传二进制文件问题
- 问题描述 :在Linux 6.1、JDK 1.2.2、IE 5.0、Netscape 4.1环境中,1.3.14版本的Apache,用户设计的Java Servlet包含文件上传功能,但只能上传文本文件。
- 解决方案 :联系问题报告者weetat@cesma.com.sg,他可能已经自行解决了该问题。
2.8 字节服务问题
- 问题描述 :在Sun Solaris 2.7和gcc环境中,1.3.14版本的Apache,当客户端内联加载PDF文件且启用PDF后台处理时,会出现问题。此问题仅在Acrobat 4.0与Netscape 4.x或IE 4.x和5.x结合使用时出现。
- 解决方案 :该问题由Tony Finch修复,补丁可在 获取。
2.9 HTTP停止服务问题
-
问题描述
:在AIX环境中,1.3.6版本的Apache,
error_log中出现ws_read_domain_link错误,该错误会导致所有正在运行的HTTPD实例阻塞,造成资源耗尽。重启HTTPD后问题依旧存在。 - 解决方案 :目前尚未有明确的解决方案,可联系问题报告者pm@seascopegroup.com了解更多信息。
2.10 安全性不足问题
- 问题描述 :在Linux 2.16、Apache 1.3.14环境中,用户担心/cgi - bin/目录下脚本的安全性及其UID/GID。
- 解决方案 :Apache人员建议用户阅读 文档。Apache 1.2引入的suEXEC功能允许用户以不同于调用Web服务器的用户ID运行CGI和SSI程序,可解决攻击者利用Web服务器权限的问题。
2.11 网络环境下CGI支持问题
-
问题描述
:在Novell NetWare 5.1 SP1环境中,使用1.3.14版本的预编译二进制文件,
mod_cgi未编译到预构建的二进制文件中。 - 解决方案 :有两种解决方案,一是从源代码分发版进行构建,二是升级Apache版本。
2.12 浮点异常问题
-
问题描述
:在Linux 2.0.34的cobalt raq2 mips环境中,安装PHP后,1.3.14版本的Apache出现浮点错误。这是因为PHP 4.0.4的
./configure脚本无法正确检测SRAND48函数。 -
解决方案
:编辑
main/php_config.h文件,将SRAND48的定义从#define SRAND48 1改为#define SRAND48 0。该定义位于php_config.h文件的第396和397行(至少在2000年9月22日版本,MD5签名为3e481210d84c9e40556af30d4dfab6a8的文件中)。
2.13 编译问题
-
问题描述
:在win2000、nmake、VC++环境中,使用1.3.14版本的Apache,构建
htdigest.exe时出现致命错误。这通常是因为项目的C++运行时设置不正确,意外链接了单线程和多线程库。 -
解决方案
:修复项目的C++运行时设置,使用多线程DLL调试。确保应用程序项目文件只包含适当的库,第三方库也应创建适当的单线程或多线程版本。参考MSDN的VC++文档库中关于Linker Tools Error LNK1169和Linker Tools Error LNK2005的条目。注意不要使用
/FORCE或/FORCE:MULTIPLE选项。
2.14 重写映射问题
-
问题描述
:在FreeBSD 2.2.7 - RELEASE环境中,1.3.17版本的Apache,RewriteMap处理出现问题,
${}扩展被忽略。 - 解决方案 :Apache提供的修复链接已失效,可尝试使用 - fix.diff 。
2.15 安装问题
-
问题描述
:在Win98环境中,执行
Apache.exe时遇到Can not determine host name问题。 -
解决方案
:这不是一个Bug,可尝试在配置文件中设置
ServerName IP - Address。
2.16 服务器无响应问题
-
问题描述
:在HP - UX ctcsf01 B.11.00 U 9000/800环境中,1.3.12版本的Apache,服务器无响应,错误日志中记录
[error] (9)Bad file number: accept: (client socket)。这可能是C套接字或I/O错误,也可能是阻塞问题。 - 解决方案 :确保TCP/IP配置正确。可参考 获取错误代码信息。
2.17 二进制文件下载问题
- 问题描述 :在AIX 4.3.2环境中,1.3.17版本的Apache,二进制文件下载功能无法正常工作。
- 解决方案 :将Apache升级到更高版本。
2.18 共享模块加载问题
-
问题描述
:在Solaris 7、gcc 2.7.2.3环境中,使用1.3.17版本的Apache,加载共享模块时可能因未解析对
libgcc.a的引用而失败。 -
解决方案
:在
src/Configuration中定义LD_SHLIB = gcc和LDFLAGS_SHLIB = -shared。
2.19 虚拟主机资源问题
- 问题描述 :在SunOS 5.6、Sun’s cc环境中,使用1.3.14版本的Apache,添加超过232个虚拟主机后,会出现严重的资源问题。
- 解决方案 :可参考 获取解决方案。
2.20 Win98待机问题
- 问题描述 :在Win98、Win98SE环境中,3.1.17版本的Apache,当Win98进入待机状态时,Apache也会停止工作。这是PHP与Win98之间的不良交互导致的。
-
解决方案
:临时解决方案是禁用待机功能。彻底解决方法是禁用
php4Apache.dll。
2.21 IPv6/IPv4混合环境访问控制问题
-
问题描述
:在SunOS 5.8、gcc 2.95.2环境中,
httpd - 2_0_12 - alpha版本的Apache,IPv4和IPv6地址结构的差异可能会破坏某些Apache访问控制。 - 解决方案 :可在问题报告的URL中获取补丁。
2.22 构建问题
-
问题描述
:在SunOS 5.6、gcc 2.7.2.3环境中,构建2.0a9版本的Apache时出现问题,
make过程在/dvl/sw/nt/Apache/2.0a9/Apache_2.0a9/srclib和/dvl/sw/nt/Apache/2.0a9/Apache_2.0a9/test处失败。 - 解决方案 :将Apache升级到2.0版本。
2.23 代理模块头文件缺失问题
-
问题描述
:在WinNT4 Server with VC++7环境中,2.0a9版本的Apache,无法在代理模块中找到
ap_cache.h和buff.h头文件。 - 解决方案 :该问题已修复,升级Apache版本即可。
2.24 dbm_fetch问题
-
问题描述
:在Red Hat 7.0 kernel 2.2.16 - 22 i586环境中,使用Apache_1.3.14版本,启动Apache时出现
Cannot load /etc/httpd/modules/mod_rewrite.so: undefined symbol: dbm_fetch错误,注释掉rewrite模块后,mod_auth_dbm也出现dbm_fetch错误。 -
解决方案
:此问题可能与gdbm有关。可尝试使用
nm等工具确定受影响应用程序所链接的库,检查所需库是否存在于系统中,且是否与应用程序原始构建环境中的位置相同。
2.25 编译失败问题
-
问题描述
:在Linux SuSE 7.1环境中,使用1.3.19版本的Apache,编译时在
mod_rewrite.c:93、mod_rewrite.h:135、db1/ndbm.h处失败,提示文件未找到。 - 解决方案 :Apache已修复此问题,升级Apache版本即可。
2.26 winsock.h包含问题
-
问题描述
:在WinNT4 sp6 with VC++7环境中,2.014版本的Apache,
windows.h在可包含winsock2.h之前包含了winsock.h,导致致命编译错误。 - 解决方案 :虽然Apache已修复此问题,但可使用以下临时解决方案:
#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
#ifdef __cplusplus
extern "C" {
#endif
.........
#ifdef __cplusplus
}
#endif
2.27 IE 5.5刷新导致服务器崩溃问题
-
问题描述
:在Windows 2000环境中,1.3.19版本的Apache,在IE 5.5中按下
Ctrl + Refresh(或简单刷新)会导致服务器崩溃。这是由于客户端Java实现存在缺陷。 - 解决方案 :Apache管理员可考虑设置锁定屏幕保护程序在1分钟后启动,防止他人误操作导致服务器崩溃。
2.28 核心转储问题
- 问题描述 :在FreeBSD环境中,1.3.19版本的Apache,主机查找时出现核心转储问题。
- 解决方案 :可在问题报告的URL中获取补丁(若尚未升级)。
2.29 访问控制问题
- 问题描述 :在SunOS 5.8、gcc 2.95.2环境中,2.0.14 - alpha版本的Apache,IPv6/IPv4混合环境下访问控制无效。
-
解决方案
:可在问题报告的URL中获取名为
IPv6 - mod_access.patch的补丁。
2.30 模块加载问题
-
问题描述
:在Solaris 2.8、gcc version 2.95.2环境中,1.3.19版本的Apache,Web服务器无法加载模块。这通常是由于
mod_access配置错误导致的。 -
解决方案
:检查以下几点:
1. 确保在构建时没有执行'--disable - module = access'。
2. 添加AddModule mod_access.c和LoadModule access_module语句。
3. 确保正确指定模块的完整名称(如mod_access.so)。
2.31 内存泄漏问题
- 问题描述 :在Linux (MkLinux DR3)、egcs - 2.90.25环境中,使用1.3.14版本的Apache,会出现大量内存泄漏问题,Apache在五小时内会占用200 + 兆字节的内存。
- 解决方案 :目前没有明确的解决方案,可尝试升级Apache版本。
2.32 网络连接问题
-
问题描述
:在Red Hat 6.2、egcs - 2.91.66环境中,1.3.19版本的Apache,当系统未连接到网络时,HTTPD会在
ap_get_local_host处崩溃。 - 解决方案 :可在 - 1.3/src/main/util.c.diff?r1 = 1.194&r2 = 1.195 获取补丁。
2.33 重写引擎指令问题
- 问题描述 :在Linux 2.2.16 (Slackware 7.1)环境中,1.3.19版本的Apache,即使文件名的扩展名不匹配,也会自动返回PHP文件。
-
解决方案
:从受影响的目录中移除
Options –Multiviews。
2.34 启动时段错误问题
- 问题描述 :在Linux i486 gcc Red Hat 6.0环境中,1.3.19版本的Apache,启动时会出现段错误,信号为11。这可能是由于Apache处理主机名的方式存在问题。
- 解决方案 :可在 - 1.3/src/main/util.c.diff?r1 = 1.194&r2 = 1.195 获取补丁(若尚未升级)。
2.35 编译错误问题
- 问题描述 :在Win2k、2.0.15a、VC97、Perl、v5.6.0环境中,编译2.0.15a版本的Apache时出现问题,这与Windows SDK安全描述符有关。
-
解决方案
:确保定义
TRUSTEE_IS_WELL_KNOWN_GROUP。可在完整的问题报告中获取补丁。
2.36 DoS问题
-
问题描述
:在Solaris 7、gcc 2.8.1环境中,2.0.15版本的Apache,处理16个CGI请求后,会进入错误报告状态,快速填满磁盘(通过
error_log)。这是文件描述符泄漏问题。 - 解决方案 :将Apache升级到更高版本。
2.37 CGI变量漏洞问题
-
问题描述
:在SunOS 5.8、gcc 2.95.2环境中,2.0.15版本的Apache,对于非
[a-zA - Z_]的CGI环境变量,Apache可能会将其转换为_,这可能导致意外结果,使攻击者绕过访问控制。 - 解决方案 :可在完整的问题报告中获取补丁。
2.38 安装包问题
- 问题描述 :在Windows 2000环境中,使用1.3.20版本的Apache,通过MSI安装程序安装时可能会遇到问题。
- 解决方案 :可参考 获取解决方案。
2.39 htpasswd加密问题
-
问题描述
:在Slackware环境中,1.3.19版本的Apache,使用
htpasswd的默认crypt函数时会出现段错误。这是因为Slackware的crypt函数与其他版本不兼容。 -
解决方案
:安装
descrypt包。
2.40 本地访问问题
-
问题描述
:在Windows 98环境中,1.3.19版本的Apache,无法通过
和访问本地和远程PC。 - 解决方案 :可参考问题编号7173的解决方案。
2.41 目录安全漏洞问题
- 问题描述 :在Linux、gcc环境中,1.3.20版本的Apache,Web爬虫可以访问受保护目录的文档和目录。
- 解决方案 :目前Apache尚未提供解决方案,可能与Wayback Machine项目( )有关。
2.42 监听程序问题
-
问题描述
:在SunOS 5.7、gcc环境中,1.3.12版本的Apache,监听程序挂起或退出,但子进程仍在运行。这是由于
LockFile配置错误导致的。 -
解决方案
:检查并修正
LockFile配置。
2.43 端口套接字问题
- 问题描述 :在Windows 95环境中,1.3.20 - win32 - src - r2版本的Apache,启动时无法获取端口80的套接字。
-
解决方案
:正确定义
ServerName指令。
2.44 套接字操作问题
-
问题描述
:在Win98SE环境中,2.0.28 beta win32版本的Apache,出现
(32538) Socket operation on non - socket: Parent: WSADuplicateSocket failed for socket 6640424错误。 - 解决方案 :可参考问题编号8381的解决方案。
3. 问题解决流程
为了更清晰地展示解决Apache问题的流程,以下是一个mermaid格式的流程图:
graph TD;
A[发现问题] --> B[查看问题报告编号和描述];
B --> C{是否有已知解决方案};
C -- 是 --> D[按照解决方案操作];
C -- 否 --> E[进一步分析问题环境和日志];
E --> F[尝试常见解决方案或联系社区];
F --> G{问题是否解决};
G -- 是 --> H[记录解决方案];
G -- 否 --> I[提交新的问题报告];
D --> J[验证解决方案有效性];
J --> K{是否有效};
K -- 是 --> H;
K -- 否 --> E;
通过以上的问题汇总和解决方案,希望能帮助大家更好地解决Apache使用过程中遇到的各种问题。在实际操作中,建议根据具体的问题描述和环境,选择合适的解决方案。同时,及时关注Apache的官方更新,以获取最新的安全补丁和功能改进。
Apache常见问题及解决方案汇总(续)
4. 更多问题及解决方案
4.1 缓冲区溢出问题
- 问题描述 :在Windows 98、Apache 1.3环境中,发送200个斜杠(/)会导致Apache win32出现缓冲区溢出,并显示目录列表。
- 解决方案 :该问题在1.3.21版本中已修复,若使用的是更早版本,应立即将Apache升级到1.3.21或更高版本。
4.2 链接器错误问题
-
问题描述
:在Win2000和Cygwin环境中,编译2.0.16版本的Apache时,出现
Linker error: /usr/local/include/sys/sem.h:52: field ‘sem_perm’ has incomplete type错误,这是因为该版本不支持Cygwin。 - 解决方案 :将Apache升级到2.0.28版本。
4.3 日志文件大小问题
- 问题描述 :在Linux环境中,1.3.19版本的Apache,当错误日志达到Linux的最大文件大小2GB时,Apache会崩溃,且由于无法写入错误日志,难以确定崩溃原因。
- 解决方案 :定期对日志进行轮转,避免日志文件过大。
4.4 模块使用问题
-
问题描述
:在Linux环境中,1.3.20版本的Apache,使用
mod_rewrite和mod_so时出现段错误和核心转储问题,与ezPublish有关。 - 解决方案 :可参考问题编号4577、6204和8205的解决方案。
4.5 启动失败问题
-
问题描述
:在Slackware、gcc环境中,启动1.3.20版本的Apache时,出现
libc.so.6: version ‘GLIBC_2.2’ not found错误。由于篡改glibc较为复杂,更改或升级库可能会破坏许多系统组件。 - 解决方案 :建议在单独的机器上尝试使用更新的Linux版本和最新的Apache进行测试。
4.6 安装后启动失败问题
-
问题描述
:在Windows 2000、Service Pack 2环境中,安装1.3.20 - Win32 Binary Distribution版本的Apache后,启动失败,错误信息为
WSADuplicateSocket failed for socket 368。 - 解决方案 :可参考 获取解决方案。
4.7 编译问题
-
问题描述
:在Solaris 2.8、PHP 4.0.6、gcc环境中,尝试编译1.3.20版本的Apache并启用php和ldap时,构建在
ld: fatal: Symbol referencing errors. No output written to httpd处失败。 -
解决方案
:
- 确保安装了bison和flex。
- 执行以下命令:
./configure --prefix=/opt/Apache --enable-module=so
make
make install
./configure --with-apxs=/opt/Apache/bin/apxs
make
make install
3. 编辑`httpd.conf`文件以支持php4,并重启Apache。
4.8 启动初始化问题
-
问题描述
:在hpux10.20、gcc环境中,启动Apache_1.3.9 for hpux10.20版本的Apache时,出现
/usr/lib/dld.sl: call tp mmap() failed错误,这是因为一个或多个相关库没有执行所需操作的权限。 - 解决方案 :明确为相关库提供权限,Apache即可正常启动。
4.9 编译错误问题
-
问题描述
:在Solaris 5.7、GCC ver 2.95环境中,编译1.3.20版本的Apache时,出现
values - Xa.o: No such file or directory错误。 - 解决方案 :可参考 获取解决方案。
4.10 安装错误问题
- 问题描述 :在WinNT 4.0环境中,安装1.3.20 - win32版本的Apache时,安装失败,错误为Windows内部错误#2103。
- 解决方案 :可参考 - US;q302472 获取解决方案。
4.11 日志输出问题
-
问题描述
:在SunOS、Mod_Perl 1.25、Perl 5.6.1环境中,1.3.20版本的Apache使用
Apache::LogFile时,将访问日志和错误日志输出到同一个文件。 - 解决方案 :在配置文件中为每个日志正确定义单独的条目,以区分它们。
4.12 代理请求处理问题
- 问题描述 :在Linux 2.2.19、gcc 2.95.3环境中,1.3.20版本的Apache,当代理功能禁用时,外部用户尝试将服务器用作公共代理会收到404错误,用户担心这会影响服务质量。
- 解决方案 :官方回应指出,当不允许代理请求时,返回403错误是正确的响应。
5. 问题分类总结
为了更清晰地了解Apache常见问题的分布情况,以下是一个按照问题类型进行分类的表格:
| 问题类型 | 问题数量 | 常见解决方案 |
| ---- | ---- | ---- |
| 安全漏洞问题 | 3 | 升级版本、打补丁 |
| 编译构建问题 | 7 | 升级版本、安装依赖、修改配置 |
| 启动运行问题 | 8 | 升级版本、修改配置、检查环境 |
| 模块使用问题 | 5 | 升级版本、修改配置、检查依赖 |
| 网络连接问题 | 3 | 检查配置、升级版本 |
| 日志文件问题 | 2 | 定期轮转日志 |
| 其他问题 | 3 | 参考特定解决方案或联系相关人员 |
6. 问题解决步骤总结
为了帮助大家更有条理地解决Apache问题,以下是一个详细的步骤列表:
1.
发现问题
:在使用Apache过程中,注意观察服务器的运行状态、错误日志等,及时发现异常情况。
2.
收集信息
:记录问题出现的环境(操作系统、Apache版本等)、具体的错误信息、相关的操作步骤等。
3.
查找已知解决方案
:通过问题报告编号、错误描述等,在已有的问题汇总中查找是否有对应的解决方案。
4.
尝试解决方案
:如果有已知解决方案,按照方案进行操作;如果没有,进一步分析问题环境和日志,尝试常见的解决方案或向社区寻求帮助。
5.
验证解决方案有效性
:执行解决方案后,验证问题是否得到解决。如果解决,记录解决方案;如果未解决,提交新的问题报告。
7. 流程图回顾与总结
再次回顾之前的问题解决流程:
graph TD;
A[发现问题] --> B[查看问题报告编号和描述];
B --> C{是否有已知解决方案};
C -- 是 --> D[按照解决方案操作];
C -- 否 --> E[进一步分析问题环境和日志];
E --> F[尝试常见解决方案或联系社区];
F --> G{问题是否解决};
G -- 是 --> H[记录解决方案];
G -- 否 --> I[提交新的问题报告];
D --> J[验证解决方案有效性];
J --> K{是否有效};
K -- 是 --> H;
K -- 否 --> E;
这个流程图清晰地展示了从发现问题到解决问题的完整过程。在实际解决Apache问题时,按照这个流程进行操作,可以提高解决问题的效率和准确性。
总之,Apache在使用过程中可能会遇到各种各样的问题,但通过对这些问题的总结和分析,我们可以找到相应的解决方案。希望大家在遇到问题时,能够冷静分析,按照上述步骤和方法,顺利解决问题。同时,持续关注Apache的官方动态,及时更新软件,以保障服务器的稳定运行和安全性。
版权声明:本文标题:Apache错误大百科:常见故障与对应解决方案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/web/1773210141a3276904.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论