PHP APC的问题,apache出现Segmentation fault(11)

同事修改了php.ini并重启了apache后页面只能访问一次,再次访问出现无法访问!他说给php增加了APC就这样了!我先检查了apache的log发现有很多错误如下:
[Thu Aug 13 14:08:59 2009] [notice] child pid 1188 exit signal Segmentation fault (11)
[Thu Aug 13 14:09:00 2009] [notice] child pid 1187 exit signal Segmentation fault (11)
[Thu Aug 13 14:09:00 2009] [notice] child pid 1193 exit signal Segmentation fault (11)
[Thu Aug 13 14:09:01 2009] [notice] child pid 1195 exit signal Segmentation fault (11)
[Thu Aug 13 14:09:02 2009] [notice] child pid 1196 exit signal Segmentation fault (11)
系统环境如下:
Redhat as 5
Apache/2.2.8
PHP 5.2.6
APC-3.0.19
APC的安装过程

cd APC-3.0.19
/usr/local/php/bin/phpize
./configure –enable-apc –enable-apc-mmap –with-php-config=/usr/local/php/bin/php-config
make && make install

php.ini修改内容如下:

extension=apc.so
apc.enabled = 1
apc.cache_by_default = on
apc.shm_segments = 1
apc.shm_size = 64
apc.ttl = 7200
apc.user_ttl = 7200
apc.num_files_hint = 0
apc.write_lock = On

apache的工作模式为prefork
出现这种问题的原因是由于APC与zend optimizer模块的之间发生了冲突,把zend注销就行了!

Apache2 mod组件中文注解

##如果需要提供基于文本文件的认证,加载此模块,否则注释掉
#LoadModule authn_file_module modules/mod_authn_file.so

##如果需要提供基于DBM文件的认证,加载此模块,否则注释掉
#LoadModule authn_dbm_module modules/mod_authn_dbm.so

##如果需要提供匿名用户认证,加载此模块,否则注释掉
#LoadModule authn_anon_module modules/mod_authn_anon.so

##如果需要提供基于SQL数据库的认证,加载此模块,否则注释掉
#LoadModule authn_dbd_module modules/mod_authn_dbd.so

##如果需要在未正确配置认证模块的情况下简单拒绝一切认证信息,加载此模块,否则注释掉
#LoadModule authn_default_module modules/mod_authn_default.so

[阅读全文...]

解决编译Apache时出现的libz.a、libexpat.so错误

今天上午开始为Bacelab维护服务器了。
在编译Apache时候出现了libz.a、libexpat.so错误,apache的版本是httpd-2.2.8.tar.gz。下面是这个错误的解决方法。

1、libz.a

错误:

/usr/local/lib/libz.a: could not read symbols: Bad value
collect2: ld returned 1 exit status

解决方法:

重新安装 zlib-1.2.3.tar.gz

tar -zxvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
./configure

vi Makefile
找到 CFLAGS=-O3 -DUSE_MMAP
在后面加入-fPIC,即变成CFLAGS=-O3 -DUSE_MMAP -fPIC
接下面步骤

make
make install

2、libexpat.so

错误:

/usr/lib/libexpat.so: could not read symbols: File in wrong format

解决方法:

编译时增加编译参数 –with-expat=builtin 。貌似在64位服务器下编译脚本在定位系统 expat 支持时有些问题。使用自带的expat来编译就不存在这个问题了。