此时,从 httpd.conf 文件中可看到如下模块被动态加载(没有cgi模块):
1
LoadModule deflate_module modules/mod_deflate.so
2
LoadModule expires_module modules/mod_expires.so
3
LoadModule headers_module modules/mod_headers.so
4
LoadModule ssl_module modules/mod_ssl.so
5
LoadModule rewrite_module modules/mod_rewrite.so
6
LoadModule php5_module modules/libphp5.so
查了下网络资料,发现Apache自带的apxs 工具,可以在不重新编译Apache的前提下,给Apache添加模块。
Apache运行cgi程序需要用到2个模块:mod_cgi.so 与 mod_cgid.so
操作如下:
添加的模块:
LoadModule cgi_module libexec/mod_cgi.so LoadModule cgid_module libexec/mod_cgid.so
添加步骤:
如要额外安装cgi,先找到mod_cgi.c 及mod_cgid.c 。一般在apache安装包目录下,如 ./httpd-2.2.25/modules/generators 。
#编译安装 cgi模块
1
cd
/usr/
local
/src/Apache-2.2.25/httpd-2.2.25/modules/generators
2
/usr/
local
/apache/bin/apxs -i -a -c mod_cgi.c
编译成功后会输出:
1
cd
/usr/
local
/src/Apache-2.2.25/httpd-2.2.25/modules/generators
2
/usr/
local
/apache/bin/apxs -i -a -c mod_cgi.c
5
----------------------------------------------------------------------
6
chmod
755 /usr/
local
/apache/modules/mod_cgi.so
7
[activating module `cgi'
in
/usr/
local
/apache/conf/httpd.conf]
#编译安装 cgid模板
1
cd
/usr/
local
/src/Apache-2.2.25/httpd-2.2.25/modules/generators
2
/usr/
local
/apache/bin/apxs -i -a -c mod_cgid.c
编译成功后会输出:
2
----------------------------------------------------------------------
3
chmod
755 /usr/
local
/apache/modules/mod_cgid.so
4
[activating module `cgid'
in
/usr/
local
/apache/conf/httpd.conf]
asps参数含义:
-i 表示需要执行安装操作。 -a 自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。 -n 增加或启用的模块名称。
# 再次查看下配置文件 httpd.conf :
1
LoadModule deflate_module modules/mod_deflate.so
2
LoadModule expires_module modules/mod_expires.so
3
LoadModule headers_module modules/mod_headers.so
4
LoadModule ssl_module modules/mod_ssl.so
5
LoadModule rewrite_module modules/mod_rewrite.so
6
LoadModule php5_module modules/libphp5.so
7
LoadModule cgi_module modules/mod_cgi.so
8
LoadModule cgid_module modules/mod_cgid.so
cgi与cgid模块被加载。
#重启下Apache
结果报如下错误:
1
[root@localhost PHP-5.3.27]
3
启动 httpd:httpd: Syntax error on line 61 of /usr/
local
/apache/conf/httpd.conf: module cgi_module is built-
in
and can't be loaded
提示说:cgi_module 是内建模块 ,即无需手动加载,所以我们把“LoadModule cgi_module modules/mod_cgi.so ”注释掉即可!
用命令 apachectl -l 去查看下哪些模块被内建了
01
[root@localhost generators]
30
[root@localhost generators]
从上面可看出,mod_cgi.c 果然被内建 了!
常见的安装报错及解决方案(以安装rewrite模块为例)
报错1:
Can`t loacte API module staructure `mod_rewrite_module` in file /usr/local/apache2/modules/mod_rewrite.so:/usr/local/apache2/lib/libapr-0.so.0:undefined symbol:mod_rewrite_module
解决方法:
httpd.conf 里面写的mod_rewrite_module改成rewrite_module。
报错2:
module rewrite_module is built-in and can't be loaded.
解决方法:
表示模块是内建的 ,不用再手动调入,注释掉 httpd.conf 中如下行:
#LoadModule rewrite_module modules/mod_rewrite.so
检查所有内建模块 的命令: apachectl -l
原链接地址:http://www.qianyunlai.com/post-698.html