0

好吧,我在重新启动 Apache 服务器时遇到了一些问题。我修改了服务器上的 ulimit 但我无法重新启动 httpd;我正在运行服务器CentOS 5.8 x64。httpd -V 的输出:

Server version: Apache/2.2.3
Server built:   Jan 10 2013 08:19:28
Server's Module Magic Number: 20051115:3
Server loaded:  APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
Architecture:   64-bit

运行时出现的错误/sbin/service httpd restart(我不打算打印大厅输出):

Syntax error on line 210 of /etc/httpd/conf/httpd.conf: 
Syntax error on line 6 of /etc/httpd/conf.d/php.conf: 
Cannot load /etc/httpd/modules/libphp5.so into server: libidn.so.11: 
wrong ELF class: ELFCLASS32

我用谷歌搜索了这个错误并试图找出问题所在。我发现这libphp5.so是 64 位架构,而libidn.so.1132 位。通常,据我所知,在 64 位架构上使用 32 位程序应该没有问题,但在这种情况下,64 位程序中使用了 32 位库(****参见这个相关问题** )。

我尝试安装 64 位版本的库,但我能找到,对于我的操作系统(centOS 5.8)是 libidn_x86_64 版本,它又是 32 位版本。

服务器上安装的程序:

squid - Proxy
ffmpeg - for video streaming
csf-lfd -> firewall
Apache

感谢您对发现问题的任何帮助!

4

1 回答 1

1

由于CentOS 5.1 中的 libidn 版本与 5.9 中的版本相同(实际上是同一个文件),因此可以肯定它会安装在 5.8 中

可以找到,对于我的操作系统(centOS 5.8)是 libidn_x86_64 版本,它又是 32 位的。

不,名称暗示它是 64 位版本 - 如果它包含 32 位目标文件,那么就出现了问题 - 此外,鉴于 CentOS 的广泛使用以及各种事情都需要 libidn,我敢肯定如果 rpm 包含错误的文件,现在有人会注意到。

您可能需要花一些时间考虑一下您的服务器是如何进入这种状态的。应该不可能从 Centos 存储库安装/升级 PHP 并使用正确的依赖项(除非你强迫它忽略它们)。

于 2013-10-31T12:30:48.413 回答