作为菜鸟,几次想学LINUX的动态链接库,在网上也找了不少资源,却每次都被同一个问题挡在门外.就是在我执行程序时,总是遇到加载so文件时的错 误.我按照网上说的,又是改LD_LIBRARY_PATH又是改ld.so.conf配置文件,结果都无济于事.后来找人一问,才知道原来不是它的错 误,而是 Linux 内核中提供的强制访问控制 (MAC)系统SELINUX的原因.
在百度上找到了一篇文章,很好地解决了我的问题.先摘下来:
When packaging an application on RHEL or CentOS, you may receive the following error:
apache2+php4整合完毕后启动apache 时报错
root@localhost fgn]# /usr/local/apache/bin/apachectl restart
httpd: Syntax error on line 53 of /usr/local/apache/conf/httpd.conf:
Cannot load /usr/local/apache/modules/libphp4.so into server:
/usr/local/apache/modules/libphp4.so: cannot restore segment prot after
reloc: Permission denied
解决:
这是因为SELINUX的问题,需要关闭SELINX,执行:/usr/sbin/setenforce 0
引用:
cannot restore segment prot after reloc: Permission denied
.
To Temporarily disable enforcement on a running system
/usr/sbin/setenforce 0
To permanently disable enforcement during a system startup
change "enforcing" to "disabled" in ''/etc/selinux/config'' and reboot.
.
By default, CentOS 5 has the SE Linux feature set to "enforcing". We are looking into ways to removing these steps.
本文介绍了解决Linux环境下因SELinux设置为enforcing而导致的.so文件加载失败问题。通过临时或永久禁用SELinux的方法,可以有效解决如apache启动时报错的情况。
5041

被折叠的 条评论
为什么被折叠?



