Cannot load /usr/local/apache/modules/libphp5.so

今天在CentOS(5.9)上,编译安装了httpd-2.2.14,php-5.3.0,安装完毕重启apache的时候报了如下的错误:

httpd: Syntax error on line 53 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: cannot restore segment prot after reloc: Permission denied

于是在google上搜索了一下,原始是因为Linux有一个SELinux保护模式引起的。具体的解决办法如下:

1)关闭SELinux

vi /etc/selinux/config 将SELINUX=enforcing 改成SELINUX=disabled 需要重启

2)不关闭SELinux

setenforce 0

chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /usr/local/apache/modules/libphp5.so

service httpd restart

setenforce 1

其实这些都是网上给出的解决办法,我都试过了,可以解决问题。但是好多都没有具体说明setenforce和chcon这两个命令

// 查看SELinux的当前模式

# getenforce

// 设置SELinux的当前模式,1设为Enforcing,2设为Permissive

# setenforce 1|0

chcon命令:修改对象(文件)的安全上下文。比如:用户:角色:类型:安全级别。
命令格式:

   Chcon [OPTIONS…] CONTEXT FILES…..

   Chcon [OPTIONS…] –reference=PEF_FILES FILES…

说明:

    CONTEXT 为要设置的安全上下文

    FILES 对象(文件)

    --reference 参照的对象

    PEF_FILES 参照文件上下文

    FILES      应用参照文件上下文为我的上下文。

    OPTIONS 如下:

        -f          强迫执行

        -R         递归地修改对象的安全上下文

        -r ROLE    修改安全上下文角色的配置

        -t TYPE    修改安全上下文类型的配置

        -u USER   修改安全上下文用户的配置

        -v         显示冗长的信息

         -l, --range=RANGE    修改安全上下文中的安全级别

posted @ 2013-06-11 22:30  wangjunzi  阅读(2203)  评论(0编辑  收藏  举报