LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 7150|回复: 12

Apache 2.0.36 & PHP 4.3 的集成

[复制链接]
发表于 2002-12-31 15:44:16 | 显示全部楼层 |阅读模式
Apache 2.0.36 & PHP 4.3 的集成  (DSO动态共享对象方式)

一、编译 Apache 的命令是:
#./configure --prefix=/usr/local/apache2 --enable-auth-anon --enable-auth-dbm --enable-ext-filter --enable-http --enable-dav --enable-rewrite --enable-so
#make
#make install


二、下载 php4.3.tar.gz 用新版本编译。
#./configure --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --with-gd
#make
#make install
提示:
mysql的目录位置,如果采用RPM包安装,则路径是/usr;如果采用的是编译安装,则路径参数要根据在./configure --prefix中的编译开关来确定。


三、修改 /usr/local/apache2/conf/httpd.conf
添加内容:
LoadModule php4_mododule modules/libphp4.so

AddOutputFilter PHP .php
AddInputFilter PHP .php

修改字符集设置
AddDefaultCharset GB2312

完成。

提示:
许多在LINUX环境下编译的程序,都会带有一个configure的配置程序。如果对上述配置开关存在疑问,可以通过 ./configure --help 的方式来查看。
发表于 2003-1-1 03:58:45 | 显示全部楼层

我下的是2.0.43的,安装应该怎么写?

#./configure --prefix=/usr/local/apache2 --enable-auth-anon --enable-auth-dbm --enable-ext-filter --enable-http --enable-dav --enable-rewrite --enable-so

我用这段最后报错:
no acceptable C compiler found in $PATH
(是不是没有指定C编译器的路径?,在哪修改?)
configure failed for srclib/apr;


该怎么解决?谢谢
发表于 2003-1-1 16:50:04 | 显示全部楼层

DSO动态共享对象方式 -- 是什么意思?

DSO动态共享对象方式 -- 是什么意思?
 楼主| 发表于 2003-1-1 22:48:13 | 显示全部楼层

楼上的C编译器不对,请安装GCC即可。

楼上的C编译器不对,请安装GCC即可。
 楼主| 发表于 2003-1-1 23:02:03 | 显示全部楼层

Apache的模块静态编译与DSO

(一)以静态方式安装Apache ,则每次 PHP 有升级后,就必须重新编译安装 Apache。Apache模块静态编译安装过程的特点是在编译指令中加入模块激活指令--activate-module=src/modules/php4/libphp4.a,而libphp4.a是在PHP编译过程中生成的。
例如:
./configure --prefix=/usr/local/apache --activate-module=src/modules/php4/libphp4.a
(二)DSO 是动态共享对象,详细的文档可以参考 Apache 的在线手册。步骤如下:
1、编译Apache
#./configure --prefix=/usr/local/apache2 --enable-auth-anon --enable-auth-dbm --enable-ext-filter --enable-http --enable-dav --enable-rewrite --enable-so
关键的指令就是 --enable-so (so 意思是 Share Object)
2、编译PHP 时,使用 --with-apxs=/usr/local/apache/apxs 的指令,apxs(Apache Extension Tool) 所在的路径需要根据Apache的安装路径来修改。
3、修改httpd.conf,加入LoadModule指令。

安装成功,以后 PHP 有新的补丁/版本出来,就不需要重新编译 Apache 了。

(Manual 原文)
The Apache HTTP Server is a modular program where the administrator can choose the functionality to include in the server by selecting a set of modules. The modules can be statically compiled into the httpd binary when the server is built.
Alternatively, modules can be compiled as Dynamic Shared Objects (DSOs) that exist separately from the main httpd binary file. DSO modules may be compiled at the time the server is built, or they may be compiled and added at a later time using the Apache Extension Tool (apxs).
 楼主| 发表于 2003-1-2 00:10:14 | 显示全部楼层

本版的集成方案可在Apache 2.0.43与PHP 4.3上顺利实现(RedHat80)

本版的集成方案可在Apache 2.0.43与PHP 4.3上顺利实现(RedHat80)
发表于 2003-1-7 17:44:49 | 显示全部楼层

在LFS下执行httpd出现如下错误,请指教

ylfs:/usr/src/php-4.3.0# /usr/local/apache2/bin/httpd
Syntax error on line 1054 of /usr/local/apache2/conf/httpd.conf:
Can't locate API module structure `php4_mod' in file /usr/local/apache2/modules/libphp4.so:                                                   /usr/local/apache2/lib/libapr-0.so.0: undefined symbol: php4_mod
发表于 2003-1-7 17:46:00 | 显示全部楼层

请问LoadModule php4_mod modules/libphp4.so AddOutputFilter PHP .php AddInputF

应该加在哪里?
 楼主| 发表于 2003-1-7 18:34:32 | 显示全部楼层

添加CONF指令

添加指令方法
使用VI打开文件,查找LoadModule,你会找到一带注释的示范,在下面即可添加一行新的内容。
同理,添加AddOutputfilter等。
发表于 2003-1-7 20:00:01 | 显示全部楼层

还是出现这样的错误

mylfs:/usr/src/php-4.3.0# /usr/local/apache2/bin/httpd
Syntax error on line 1054 of /usr/local/apache2/conf/httpd.conf:
Can't locate API module structure `php4_mod' in file /usr/local/apache2/modules/libphp4.so: /usr/local/apache2/lib/libapr-0.so.0: undefined symbol: php4_mod
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表