单位的测试服务器是很早以前装的RedHat Linux 7.3。说是「测试服务器」,但由于种种原因,在上面已经跑了很多应用,再也离不开了,所以也没有办法把操作系统更新成比较新的版本。
大概是昨天或今天早上的某个时候,这台机器被人重启了(或者是自己重启了),然后就死在了启动过程中。下午有人找我报告,才发现这个情况。再次重启之后,机器是没有问题了,但是又再一次体验了那满屏幕的问号。——老毛病了,每次自动启动的时候Apache+PHP的应用访问Oracle得到的多字节字符编码总是不对,重启一次Apache就好了。一直不知道是什么原因。
心念一动,正好趁这个机会把这台服务器上的Apache+PHP+MySQL,以及周边的那些,如OpenSSL、libpng、libiconv等等,给重新整理一遍,应用上最新(或者说可用的最新)版本。
大概是昨天或今天早上的某个时候,这台机器被人重启了(或者是自己重启了),然后就死在了启动过程中。下午有人找我报告,才发现这个情况。再次重启之后,机器是没有问题了,但是又再一次体验了那满屏幕的问号。——老毛病了,每次自动启动的时候Apache+PHP的应用访问Oracle得到的多字节字符编码总是不对,重启一次Apache就好了。一直不知道是什么原因。
心念一动,正好趁这个机会把这台服务器上的Apache+PHP+MySQL,以及周边的那些,如OpenSSL、libpng、libiconv等等,给重新整理一遍,应用上最新(或者说可用的最新)版本。
OpenSSL、libiconv+gettext、libjpeg、libpng……,都很顺利。原本以为这些版本很新的东西会在不完全符合ANSI C++规范的2.96版GCC编译器上出问题,没想到居然一路绿灯。不过,好景不长,在libxml2-2.6.24上卡住了。
错误信息包含下面几句:
错误信息包含下面几句:
…… xmlIO.c: In function `xmlCheckFilename': xmlIO.c:619: syntax error before `struct' xmlIO.c:621: `stat_buffer' undeclared (first use in this function) …… |
这种语法错误,不像是编译器版本的问题。我先试着跳过这一步,继续下面的安装。不过在编译PHP 5.1.4的时候,configure报告说需要libxml2的2.6.11以上版本,而我这台机器上以前的libxml2的版本只是2.6.7。显然,这个问题是无法回避了。
拿错误信息去查,只有FreeBSD的技术支持站点上有一条bug报告的记录。不过可喜的是,报告中也附上了修正方法。经测试,该方法对于我的RedHat Linux 7.3也同样有效。
以下转自该文:
以下转自该文:
Fix: *** xmlIO.c.DIST Sat Apr 29 09:44:16 2006 --- xmlIO.c Sat Apr 29 09:44:35 2006 *************** *** 616,621 **** --- 616,622 ---- } #else #ifdef HAVE_STAT + { struct stat stat_buffer; if (stat(path, &stat_buffer) == -1) *************** *** 625,630 **** --- 626,632 ---- if (S_ISDIR(stat_buffer.st_mode)) return 2; #endif /* S_ISDIR */ + } #endif /* HAVE_STAT */ #endif /* WIN32 */ |
想要修复这个错误的朋友,若看不懂上面的意思,就注意那两行标了加号的地方。原来的xmlIO.c,是没有这两行的,找到它们的位置后把它们补上,就可以通过编译了。行号人家也标出来了,在原xmlIO.c文件的616~621行附近。
若看到这里还不明白,那就只好委屈了……
若看到这里还不明白,那就只好委屈了……
没有评论:
发表评论