PHP4.4.9 make時にmysql_create_db mysql_drop_dbエラー

MySQL 4.0 を指定してPHP 4.4.9をmakeしたときにエラーが発生した。

/usr/local/src/php-4.4.9/ext/mysql/php_mysql.c:1164: undefined reference to `mysql_create_db'
/usr/local/src/php-4.4.9/ext/mysql/php_mysql.c:1206: undefined reference to `mysql_drop_db'

 

■環境

PHP 4.4.9

MySQL 4.0.20

 

■configureの設定

$ ./configure --with-mysql=/usr/local/mysql4 --with-mysql-sock=/tmp/mysql4.sock 

複数のMySQLを利用しているので、ディレクトリとソケットを指定した。

 

■make時のエラー

$ make
(省略)
/usr/local/src/php-4.4.9/ext/mysql/php_mysql.c:1164: undefined reference to `mysql_create_db'
/usr/local/src/php-4.4.9/ext/mysql/php_mysql.c:1206: undefined reference to `mysql_drop_db'

 

■php_mysql.cを修正する

エラーが発生しているphp_mysql.cファイルを修正する。

1164行目のちょっと後ろの、PHP_FUNCTION(mysql_drop_db){} をコメントアウトして無効にする。

/* PHP_FUNCTION(mysql_drop_db)
{
zval **db, **mysql_link;
int id;
php_mysql_conn *mysql;

switch(ZEND_NUM_ARGS()) {
case 1:
if (zend_get_parameters_ex(1, &db)==FAILURE) {
RETURN_FALSE;
}
id = php_mysql_get_default_link(INTERNAL_FUNCTION_PARAM_PASSTHRU);
CHECK_LINK(id);
break;
case 2:
if (zend_get_parameters_ex(2, &db, &mysql_link)==FAILURE) {
RETURN_FALSE;
}
id = -1;
break;
default:
WRONG_PARAM_COUNT;
break;
}

php_error_docref(NULL TSRMLS_CC, E_NOTICE, "This function is deprecated,
please use mysql_query() to issue a SQL DROP DATABASE statement instead.");


ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id,
"MySQL-Link", le_link, le_plink);

convert_to_string_ex(db);

if (mysql_drop_db(&mysql->conn, Z_STRVAL_PP(db))==0) {
RETURN_TRUE;
} else {
RETURN_FALSE;
}
} */

 

■再度makeを実行してインストールする

$ make
# make install

 

 

参考ページ

先人の知恵に感謝の気持ちを込めて...。

http://www.databasebank.com/programmers/frm_detail.php?v_id=1393

http://takesita.seesaa.net/article/28878527.html

http://www.furuken.net/blog/item/125