前段时间更换了新服务器,把之前的网站全部搬过来,可是上海校友会的论坛和ecshop的商城老出错,查看error_log,基本都是这个提示:
PHP Warning: mysql_fetch_array() expects parameter 2 to be long, string given in /data/web/koven/include/inc_function.php on line 57
PHP Warning: mysql_fetch_array(): The result type should be either MYSQL_NUM, MYSQL_ASSOC or MYSQL_BOTH in /data/web/koven/include/inc_function.php on line 57
可是我查看了这个函数
function fetch_array($query, $result_type = MYSQL_ASSOC) {
return mysql_fetch_array($query, $result_type);
}
没发现什么问题啊,但是改掉就没事了。
function fetch_array($query, $result_type = MYSQL_ASSOC) {
return mysql_fetch_array($query/*, $result_type*/);
}
后来也就没怎么管,能正常运行就好了,但是昨天在把blog程序恢复为以前那套时,有的问题实在不能忍受,因此决定寻根究底把问题解决掉,在测试过程中,开始怀疑是PHP版本的问题,便下了最新版的PHP-5.3.6来编译安装,结果问题依旧。后来把/etc/php.ini里面的extension=apc.so注释掉,居然没事了。因此便怀疑是APC的问题,于是便换了eaccelerator。问题虽然是解决了,但是发现好像eaccelerator没有产生预编译功能啊,便改用xcache,怎么说也是国人开发的啊,结果make的时候一堆error,于是又想用返APC,原来才发现我系统装的是3.0.19版的,最新版的是 3.1.9版,下了新版安装后,问题解决!
附APC安装脚本:
wget http://pecl.php.net/get/APC-3.1.9.tgz
apt-get -y install autoconf
/usr/local/php/bin/phpize
./configure --prefix=/usr/local/apc \
--with-php-config=/usr/local/php/bin/php-config \
--with-apxs=/usr/local/apache2/bin/apxs \
--enable-apc \
--enable-apc-mmap \
--sysconfdir=/etc
make & make install
编辑/etc/php.ini,添加如下内容:
extension=apc.so
apc.enabled=1
apc.shm_segments=1
apc.shm_size=128
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
此文的目的在于能给遇到相同问题的朋友提供帮助,转载请注明来自乌秋博客。