关于网友提出的“Mysql 升级到 55 GA 时,PHP 526 编译出错!已解决!”问题疑问,本网通过在网上对“Mysql 升级到 55 GA 时,PHP 526 编译出错!已解决!”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:Mysql 升级到 55 GA 时,PHP 526 编译出错!已解决!
描述:今天把原来的 Mysql 5.1.35 升级至 Mysql 5.5 GA
由于 Mysql-Dev 也一同更新了。
所以必须重新编译 PHP 5.2.6 环境。
但编译出错,出现以下各种错误。
而最终的解决方式,是升级 PHP 至最新的 5.2.16
所以建议大家在 相似的环境中,需升级 Mysql 至 5.5 GA,必须同时更新 PHP
部分信息如下:
/usr/ports/databases/php5-mysqli/work/php-5.2.12/ext/mysqli/mysqli.c:637: error: (Each undeclared identifier is reported only once
/usr/ports/databases/php5-mysqli/work/php-5.2.12/ext/mysqli/mysqli.c:637: error: for each function it appears in.)
/usr/ports/databases/php5-mysqli/work/php-5.2.12/ext/mysqli/mysqli.c:638: error: 'MYSQL_RPL_SLAVE' undeclared (first use in this function)
/usr/ports/databases/php5-mysqli/work/php-5.2.12/ext/mysqli/mysqli.c:639: error: 'MYSQL_RPL_ADMIN' undeclared (first use in this function)
解决方式:
原因:这是mysql的一个bug,http://bugs.php.net/bug.php?id=46207&edit=1 ,已经提交了。
解决:
修改 /usr/include/mysql/mysql.h (使用rpm安装方式的路径) 文件内容 :
enum mysql_protocol_type
{
MYSQL_PROTOCOL_DEFAULT, MYSQL_PROTOCOL_TCP, MYSQL_PROTOCOL_SOCKET,
MYSQL_PROTOCOL_PIPE, MYSQL_PROTOCOL_MEMORY
};
----------------------------==添加的内容开始==-------------------------------------
/*
There are three types of queries - the ones that have to go to
the master, the ones that go to a slave, and the adminstrative
type which must happen on the pivot connectioin
*/
enum mysql_rpl_type
{
MYSQL_RPL_MASTER, MYSQL_RPL_SLAVE, MYSQL_RPL_ADMIN
};
----------------------------==添加的内容结束==--------------------------------------
typedef struct character_set
{
unsigned int number; /* character set number */
unsigned int state; /* character set state */
const char *csname; /* collation name */
const char *name; /* character set name */
将以上蓝色的部分内容,添加到mysql.h文件对应的位置,重新编译即可。
但接下来,还可能会出现以下错误:
ext/iconv/.libs/iconv.o: In function `php_iconv_stream_filter_ctor':
/home/king/php-5.2.13/ext/iconv/iconv.c:2491: undefined reference to `libiconv_open'
collect2: ld returned 1 exit status
make: *** [sapi/cli/php] Error 1
原因:
在安装 PHP 到系统中时要是发生「undefined reference to libiconv_open'」之类的错误信息,那表示在「./configure 」没抓好一些环境变数值。错误发生点在建立「-o sapi/cli/php」是出错,没给到要 link 的 iconv 函式库参数。
解决方法:
编辑Makefile 大约77 行左右的地方: EXTRA_LIBS = ..... -lcrypt 在最后加上 -liconv,例如: EXTRA_LIBS = ..... -lcrypt -liconv 然后重新再次 make 即可。
或者用另一种办法
ln -s /usr/local/lib/libiconv.so.2 /usr/lib64/
make ZEND_EXTRA_LIBS='-liconv'
不过接下来!还可能会报错!
collect2: ld returned 1 exit status
make: *** [libphp5.la] Error 1
解决方法:
找到你的安装光盘,提取2个rpm文件并安装
rpm -ivh libtool-ltdl-1.5.22-6.1.x86_64.rpm
rpm -ivh libtool-ltdl-devel-1.5.22-6.1.x86_64.rpm
但即使这些文件都安装后,以上报错依旧!!
暂时在 php 5.2.6 上无法解决。
建议使用相似版本的朋友暂时不要升级 Mysql 5.5 GA
解决方案1:已解决
以上介绍了“Mysql 升级到 55 GA 时,PHP 526 编译出错!已解决!”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1361025.html