在新的服务器(centos 6.3)编译安装完php-5.4.8,再配置好php.ini和httpd.conf后,启动apache-2.4.3的时候,命令执行/usr/local/apache2/bin/apachectl start时,提示: php
httpd: Syntax error on line 146 of /etc/httpd/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp5.so into server: /usr/local/apache/modules/libphp5.so: undefined symbol: zend_parse_parameters
经过搜索发现,说是缺乏bison。 linux
若是经过rpm -qa|grep bison发现没有安装bison,安装bison便可。centos能够用yum install bison apache
可是我发现已经安装了bison-2.4.1。最后实在是没办法了,下载了bison-2.5的rpm包直接安装。 centos
[root@localhost ~]# wget http://ftp.gnu.org/gnu/bison/bison-2.5.tar.gz [root@localhost ~]# tar -zxvf bison-2.5.tar.gz [root@localhost ~]# cd bison-2.5 [root@localhost ~]# ./configure [root@localhost ~]# make && make install
再从新编译安装了PHP。而后/usr/local/apache2/bin/apachectl start启动Apache。惊奇的发现能够正常启动了,测试了下PHP网页,能够正常访问。 服务器
据说还有别人会报下面这个错误,我也一块儿写出来。 测试
命令执行/usr/local/apache2/bin/apachectl start时,错误提示以下: spa
httpd: Syntax error on line 146 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 rest
这个是因为SELinux保护模式引发的。有2种方法能够解决。 code
第一种:永久关闭SELinux保护模式(不推荐,给服务器带来风险) server
[root@localhost ~]# vi /etc/selinux/config
将SELINUX=enforcing 改为SELINUX=disabled
保存重启系统。
第二种方法:临时关闭selinux模式[root@localhost ~]# setenforce 0 [root@localhost ~]# chcon -c -v -R -u system_u -r object_r -t textrel_shlib_t /usr/local/apache/modules/libphp5.so
若是上面的命令报错,能够试试这个chcon -t texrel_shlib_t /usr/local/apache/modules/libphp5.so
若是还有报错,请使用帮助,根据帮助写命令。
[root@localhost ~]# service httpd restart [root@localhost ~]# setenforce 1