**求助**Apache 2.0.55 无法加载 libphp5.so 模块

**求助**Apache 2.0.55 无法加载 libphp5.so 模块

大家好, 情况是这样的:
我在FC4上装 httpd 2.0.55 时已经加了--enable-so 参数,并将它安装在 /usr/local/apache2目录下
安装完毕后,修改了httpd.conf里的 User nobody Group nobody  (FC4上自带这个用户和组)
测试 http://localhost   一切正常,可以解析静态页面.
装php5.05时,加了--with-apxs2=/usr/local/apache2/bin/apxs
安装完毕后,查看 /usr/local/apache2/modules/libphp5.so    模块已经存在了
修改 httpd.conf  
LoadModule  php5_module  modules/libphp5.so
AddType application/x-httpd-php  .php

我想,我该做的都做了.
但启动 apachectl 时总出错,说httpd.conf的232行有语法错误.libphp5.so模块无法载入.

错误信息如下:

Syntax error on line 232 of /usr/local/apache2/conf/httpd.conf:
Can not load /usr/local/apache2/modules/libphp5.so  into server:
/usr/local/apache2/modules/libphp5.so:
Can't  restore  segment prot after reloc :  Permission  denied


就是这样,大家遇到过这种情况吗? 我对apache不是很熟.还请大家多帮帮忙.
谢谢.
*************************************************************************
此贴已结,解决方法见楼下.

不好意思,我先占个位子.
等问题彻底解决之后,我会在这里记录出错的原因与最终解决的办法.

*********************************************************************
结帖!!!

问题: apache不能加载外挂php模块. & apache加载外挂php模块后不能开机自启.
解决:这是由SELinux的安全策略配置不当引起的.在Fedora Core 的官方网站上有相关的Apache/SELinux的策略调整文档.如果嫌麻烦,可以直接修改/etc/selinux/config 将SELinux禁用.

问题: php模块成功加载后,apache解析php页面出错.
解决: 这是因为 htdocs 目录及其下文件的文件属性设置不当引起的.
        #chmod -R 755 /usr/local/apache2/htdocs
*********************************************************************

再次感谢两位斑竹的热心帮助.

谢谢您,我已经研究了那个帖子,并且使用下面的命令解决了apache2不能加载php模块的问题.

#chcon  /usr/local/apache2/modules/libphp5.so  -t shlib_t

现在,apache2可以成功的启动, 可惜还是不能解析php页面.
我在安装php时的 configure 参数为:   

#./configure  --prefix=/usr/local/php  
>--with-apxs2=/usr/local/apache2/bin/apxs  
>--with-mysql=/usr/local/mysql  
>--with-config-file-path=/usr/local/php

我在apache2的httpd.conf 里面添加了:  AddType application/x-httpd-php  .php
我已经将 php.ini-dist 复制到 /usr/local/php 目录下面 并改名为 php.ini

我在/usr/local/apache2/htdocs 目录下写了个 test.php 内容为 :  

<?php
phpinfo();
?>

本认为一切都会顺利的结束,但是访问 http://localhost/test.php  会出错.
出错信息如下:

Warning: Unknown: failed to open stream : Permission denied in Unknow on line 0

Warning: Unknown: Failed opening '/usr/local/apache2/htdocs/test.php' for inclusion ( include_path='.:/usr/local/php/lib/php' ) in Unknown on line 0

我做了许多尝试,但还是没有成功.请大家多帮帮忙.
chmod -R 777  /usr/local/apache2/htdocs
然后测试看看
非常感谢您的帮助.现在问题已经解决了.
以后当我看到 Permission denied  错误信息时,会首先考虑权限问题.

可是我还有一个不小的疑问需要您的解答:
我在 /etc/rc.d/rc.local  文件中写入
/usr/local/apache2/bin/apachectl  start
并不能做到开机自动运行 apache
改成 /usr/local/apache2/bin/httpd -k start  也不行
在/etc/profile中改好环境变量后, 在/etc/rc.d/rc.local 中写 apachectl start  也不行
但我登陆后,输入命令:
#source  /etc/rc.d/rc.local
apache马上就启动了,这说明我在rc.local中的内容没写错.
而且,我的MySQL 与 Tomcat 就是通过修改 /etc/rc.d/rc.local 实现开机自动启动的.
这说明 rc.local 脚本在开机时确实运行了,可它就是无法在开机时解释 /usr/local/apache2/bin/apachectl  start    与 /usr/local/apache2/bin/httpd -k start  等命令. 但登陆后source 却可以.
我查看/usr/local/apache2/bin 目录及其下的文件 权限均为 755  , everyone都可以读取和运行.我想apache不能自动运行,应该跟权限没关系.
请问,您遇到过这种情况吗?

你在编译PHP时:
cp libs/libphp5.so /usr/local/apache/libexec/libphp5.so
chmod 755 /usr/local/apache/libexec/libphp5.so
没有这一块吗?


QUOTE:
原帖由 linuxphpmysqlc 于 2005-11-9 01:43 发表
非常感谢您的帮助.现在问题已经解决了.
以后当我看到 Permission denied  错误信息时,会首先考虑权限问题.

可是我还有一个不小的疑问需要您的解答:
我在 /etc/rc.d/rc.local  文件中写入
/usr/local/apache ...

rc.local写入
source  启动指令

看看如何


QUOTE:
原帖由 love100 于 2005-11-9 13:52 发表
你在编译PHP时:
cp libs/libphp5.so /usr/local/apache/libexec/libphp5.so
chmod 755 /usr/local/apache/libexec/libphp5.so
没有这一块吗?

谢谢您的关注.我在编译php时用了--with-apxs2=/usr/local/apache2/bin/apxs  参数.
libphp5.so 自动添加到 /usr/local/apache2/modules目录中去了, libphp5.so 的文件属性是 755.

我使用 #chcon  /usr/local/apache2/modules/libphp5.so  -t shlib_t
后模块不能加载的问题解决了,这个问题应该只在FC4上有.

现在的问题是在/etc/rc.d/rc.local 中写 /usr/local/apache2/bin/apachectl  start
无法做到开机自动启动. 您遇到过这种情况吗?


QUOTE:
原帖由 HonestQiao 于 2005-11-9 14:27 发表


rc.local写入
source  启动指令

看看如何

我分析了一下启动日志,原来是SELinux在作怪.
通过修改 /etc/selinux/config ,将SELinux禁用后,一切问题都解决了.
包括apache不能加载libphp5.so也是由SELinux引起的.
说白了,还是权限的问题.我准备认真研究一下SELinux的安全策略.

谢谢两位斑竹的热心帮助.  这个帖子可以结了.