解决php5.4安装pdo_mysql出错
今天给新的测试机安装lamp环境,但php要求5.4,mysql是5.5,apache是2.2,这样一来我就只能手动安装了,最后居然让php5.4整得我差点无法使这个环境正常运行了,因为大家都知道安装了php,必然要安装pdo_mysql,罪魁祸首就是这个pdo_mysql,下面我来说说怎么解决的.
系统:centos 5.5
需要的软件:httpd-2.2.22.tar.gz
php-5.4.11.tar.gz
mysql-5.5.22.tar.gz
PDO_MYSQL-1.0.2.tgz
libiconv-1.14.tar.gz
1.安装前准备
yum -y install gcc gcc-c++ libtool-libs autoconf /
freetype-devel gd libjpeg-devel libpng-devel libxml2-devel /
ncurses-devel zlib-devel zip unzip curl-devel wget crontabs /
file bison cmake patch mlocate flex diffutils automake make /
kernel-devel cpp readline-devel openssl-devel vim-minimal /
glibc-devel glib2-devel bzip2-devel e2fsprogs-devel libidn-devel /
gettext-devel expat-devel libcap-devel libtool-ltdl-devel pam-devel /
pcre-devel libmcrypt-devel
2.搭建lamp环境
这个就不说了,网上这样的文章太多了.
3.安装PDO_MYSQL
wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
tar zxf PDO_MYSQL-1.0.2.tgz && cd PDO_MYSQL-1.0.2
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql
make
在make的时候有可能会出现下面的错误:
In file included from /data1/PDO_MYSQL-1.0.2/pdo_mysql.c:31:
/data1/PDO_MYSQL-1.0.2/php_pdo_mysql_int.h:25:19: error: mysql.h: No such file or directory
In file included from /data1/PDO_MYSQL-1.0.2/pdo_mysql.c:31:
/data1/PDO_MYSQL-1.0.2/php_pdo_mysql_int.h:36: error: expected specifier-qualifier-list before ‘MYSQL’
/data1/PDO_MYSQL-1.0.2/php_pdo_mysql_int.h:48: error: expected specifier-qualifier-list before ‘MYSQL_FIELD’
/data1/PDO_MYSQL-1.0.2/php_pdo_mysql_int.h:53: error: expected specifier-qualifier-list before ‘MYSQL_RES’
make: *** [pdo_mysql.lo] Error 1
解决办法:
这是因为在编译时需要mysql的头的文件,而它按默认搜索找不到头文件的位置,所以才出现这个问题.所以要将 /usr/local/mysql/include/ 目录下的mysql头文件链接到 /usr/local/include/ 的目录下:
ln -s /usr/local/mysql/include/* /usr/local/include/
然后再make和make install,pdo_mysql模块加进去了.
系统:centos 5.5
需要的软件:httpd-2.2.22.tar.gz
php-5.4.11.tar.gz
mysql-5.5.22.tar.gz
PDO_MYSQL-1.0.2.tgz
libiconv-1.14.tar.gz
1.安装前准备
yum -y install gcc gcc-c++ libtool-libs autoconf /
freetype-devel gd libjpeg-devel libpng-devel libxml2-devel /
ncurses-devel zlib-devel zip unzip curl-devel wget crontabs /
file bison cmake patch mlocate flex diffutils automake make /
kernel-devel cpp readline-devel openssl-devel vim-minimal /
glibc-devel glib2-devel bzip2-devel e2fsprogs-devel libidn-devel /
gettext-devel expat-devel libcap-devel libtool-ltdl-devel pam-devel /
pcre-devel libmcrypt-devel
2.搭建lamp环境
这个就不说了,网上这样的文章太多了.
3.安装PDO_MYSQL
wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
tar zxf PDO_MYSQL-1.0.2.tgz && cd PDO_MYSQL-1.0.2
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-pdo-mysql=/usr/local/mysql
make
在make的时候有可能会出现下面的错误:
In file included from /data1/PDO_MYSQL-1.0.2/pdo_mysql.c:31:
/data1/PDO_MYSQL-1.0.2/php_pdo_mysql_int.h:25:19: error: mysql.h: No such file or directory
In file included from /data1/PDO_MYSQL-1.0.2/pdo_mysql.c:31:
/data1/PDO_MYSQL-1.0.2/php_pdo_mysql_int.h:36: error: expected specifier-qualifier-list before ‘MYSQL’
/data1/PDO_MYSQL-1.0.2/php_pdo_mysql_int.h:48: error: expected specifier-qualifier-list before ‘MYSQL_FIELD’
/data1/PDO_MYSQL-1.0.2/php_pdo_mysql_int.h:53: error: expected specifier-qualifier-list before ‘MYSQL_RES’
make: *** [pdo_mysql.lo] Error 1
解决办法:
这是因为在编译时需要mysql的头的文件,而它按默认搜索找不到头文件的位置,所以才出现这个问题.所以要将 /usr/local/mysql/include/ 目录下的mysql头文件链接到 /usr/local/include/ 的目录下:
ln -s /usr/local/mysql/include/* /usr/local/include/
然后再make和make install,pdo_mysql模块加进去了.
就这 fatal error: mysql.h: No such file or directory 就这错误, 百谷了半小时无果, 看了博主的结尾终于解决了
# find / -name mysql.h // 我的在 /usr/include/mysql/mysql.h
# ln -s /usr/include/mysql/* /usr/local/include/