linux下创建php的mysql扩展 (pdo_mysql和mysqli)

环境

centos6.4 php7 mysql5.1.3

注:Php7已经抛弃mysql函数,所以对应的扩展mysql也不用安装了。

由于之前使用了yum install方式安装的mysql数据库,所以导致安装目录是默认的

用指令可以 ps -ef | grep mysql可以查看到mysql相关配置

[root@cqs php]# ps -ef | grep mysql

 

由上面指令我们知道mysql对应的安装目录就是 --basedir=/usr

所以接下来先安装pdo_mysql这个扩展,由于之前装mysqli一直失败,原因也不知道,在make那一步就一直报错,所以就先安装pdo_mysql.

步骤:

先进入到Php的扩展安装目录

[root@cqs pdo_mysql]# cd /home/cqs/source/php-7.0.1/ext/

[root@cqs ext]# ls

 

看到了我们需要的两个扩展。

现在进入到pdo_mysql目录,

[root@cqs ext]# cd  pdo_mysql/

先执行指令phpize

[root@cqs pdo_mysql]# /usr/local/php/bin/phpize

Configuring for:

PHP Api Version:         20151012

Zend Module Api No:      20151012

Zend Extension Api No:   320151012

接下来,就可以进行配置了,这一步要”-with-pdo-mysql=mysql安装目录”,这个参数一定要写正确路径,以防下面报错。

[root@cqs pdo_mysql# ./configure --with-php-config=/usr/local/php/bin/php-config -with-pdo-mysql=/usr/

[root@cqs pdo_mysql#make

[root@cqs pdo_mysql#make test(这一步有可能提示警告,直接忽略)

[root@cqs pdo_mysql#make install

成功后会在/usr/local/php/lib/php/extensions/no-debug-zts-2015101目录下生成pdo_mysql.so文件

[root@cqs bin]# cd  /usr/local/php/lib/php/extensions/no-debug-zts-2015101

[root@cqs no-debug-zts-20151012]# ls

curl.so  my_module.so  opcache.so  pdo_mysql.so  zip.so

说明已经成功安装pdo_mysql.so扩展了,接下来要配置php.ini文件

[root@cqs pdo_mysql]# cd /usr/local/php/lib/

[root@cqs lib]# ls

php  php.ini

建议直接把php.ini文件拉到编辑器编辑后再保存到服务器端

新增

extension= /usr/local/php/lib/php/extensions/no-debug-zts-20151012/pdo_mysql.so

保存,重启服务器

[root@cqs lib]# /usr/local/httpd-2.4.18/bin/apachectl restart

浏览器运行phpinfo文件,查看到该模块已经加载

 

 

接下来就是安装mysqli扩展了

同理,进入

[root@cqs pdo_mysql]# cd ..

[root@cqs ext]# cd mysqli/

[root@cqs mysqli]# pwd

/home/cqs/source/php-7.0.1/ext/mysqli

由于之前一直尝试不成功,所以先进行make clean

[root@cqs mysqli]#make clean

运行phpize指令

[root@cqs mysqli]# /usr/local/php/bin/phpize                                                  

Configuring for:

PHP Api Version:         20151012

Zend Module Api No:      20151012

Zend Extension Api No:   320151012

顺利完成。

运行./configure

[root@cqs mysqli]# ./configure --with-php-config=/usr/local/php/bin/php-config -with-mysqli=/usr

提示报错信息:

mysql_config not found

configure: error: Please reinstall the mysql distribution

查看帮助信息:

[root@cqs mysqli]# ./configure --help | grep mysqli

  --with-mysqli=FILE      Include MySQLi support.  FILE is the path

  --enable-embedded-mysqli

把后面的配置” --with-mysqli=/usr/”去掉,由于这里的FILE是指mysql-config对应的安装目录,所以直接去掉此参数,让系统默认

[root@cqs mysqli]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli

creating libtool

appending configuration tag "CXX" to libtool

configure: creating ./config.status

config.status: creating config.h

真的没问题了,接下来运行make指令

[root@cqs mysqli]# make

报错了

/home/cqs/source/php-7.0.1/ext/mysqli/mysqli.c:1275: 错误:提供给函数‘php_mysqli_fetch_into_hash_aux’的实参太多

make: *** [mysqli.lo] 错误 1

又是这一步报错,本想放弃的,后面重新搞了一下

[root@cqs mysqli]#make clean

[root@cqs mysqli]#/usr/local/php/bin/phpize

[root@cqs mysqli]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/bin/

又报错

mysql_config not found

configure: error: Please reinstall the mysql distribution

查找mysql_config命令

[root@cqs mysqli]# whereis mysql_config

mysql_config: /usr/bin/mysql_config /usr/share/man/man1/mysql_config.1.gz

再次执行configure,

[root@cqs mysqli]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/bin/mysql_config

creating libtool

appending configuration tag "CXX" to libtool

configure: creating ./config.status

config.status: creating config.h

[root@cqs mysqli]#

没报错了,接下来执行make

/home/cqs/source/php-7.0.1/ext/mysqli/mysqli_api.c:36:47: 错误:ext/mysqlnd/mysql_float_to_double.h:没有那个文件或目录

make: *** [mysqli_api.lo] 错误 1

[root@cqs mysqli]#

通过查找资料知道,mysql_float_to_double.h这个文件不存在于mysqli目录下,所以接下来就是要把同级目录的mysqlnd下的mysql_float_to_double.h复制过来,

[root@cqs mysqli]# cd /home/cqs/source/php-7.0.1/ext/mysqli/

[root@cqs mysqli]# mkdir ext

[root@cqs mysqli]# cd ext/

[root@cqs ext]# mkdir mysqlnd

[root@cqs ext]# cd mysqlnd/

[root@cqs mysqlnd]# cp /home/cqs/source/php-7.0.1/ext/mysqlnd/mysql_float_to_double.h mysql_float_to_double.h

[root@cqs mysqlnd]# ls

mysql_float_to_double.h

以上指令目的是复制/home/cqs/source/php-7.0.1/ext/mysqlnd/mysql_float_to_double.h

/home/cqs/source/php-7.0.1/ext/mysqli/ext/mysqlnd/mysql_float_to_double.h

成功复制文件后再次回到mysqli目录下,

[root@cqs mysqlnd]# cd /home/cqs/source/php-7.0.1/ext/mysqli/

[root@cqs mysqli]# /usr/local/php/bin/phpize

Configuring for:

PHP Api Version:         20151012

Zend Module Api No:      20151012

Zend Extension Api No:   320151012

[root@cqs mysqli]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-mysqli=/usr/bin/mysql_config

 

creating libtool

appending configuration tag "CXX" to libtool

configure: creating ./config.status

config.status: creating config.h

config.status: config.h is unchanged

[root@cqs mysqli]# make

 

Build complete.

Don't forget to run 'make test'.

[root@cqs mysqli]# make test

 

Build complete.

[root@cqs mysqli]# make install

Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-zts-20151012/

Installing header files:          /usr/local/php/include/php/

成功安装了,进入到对应目录查看:

[root@cqs bin]# cd  /usr/local/php/lib/php/extensions/no-debug-zts-20151012/

[root@cqs no-debug-zts-20151012]# ls

curl.so  my_module.so  mysqli.so  opcache.so  pdo_mysql.so  zip.so

mysqli.so就是对应的扩展,再把它添加到对应的php.ini文件

extension= /usr/local/php/lib/php/extensions/no-debug-zts-20151012/mysqli.so

保存,重启服务器

[root@cqs lib]# /usr/local/httpd-2.4.18/bin/apachectl restart

浏览器运行phpinfo文件,查看到该模块mysqli已经加载

 

总结,之所以mysqli刚开始一直会失败,主要是mysqli目录下没有那个mysql_float_to_double.h文件导致的,所以那一步复制

/home/cqs/source/php-7.0.1/ext/mysqlnd/mysql_float_to_double.h

/home/cqs/source/php-7.0.1/ext/mysqli/ext/mysqlnd/mysql_float_to_double.h

很重要,其他也没啥了,就是基本的逻辑,php在已安装的情况增加扩展步骤,

进入对安装扩展的目录,

[root@cqs lib]# cd /home/cqs/source/php-7.0.1/ext/

再进入对应的扩展目录xx

[root@cqs lib]# cd xx

[root@cqs xx]# /usr/local/php/bin/phpize

加载php已有的配置目录,再加上要安装的扩展,--with-xx=xx.path

[root@cqs xx]#./configure --with-php-config=/usr/local/php/bin/php-config --with-xx=xx.path

[root@cqs xx]#make

[root@cqs xx]#make install

完成后进入到对应目录,查看产生的xx.so

[root@cqs xx]# cd  /usr/local/php/lib/php/extensions/no-debug-zts-20151012/

xx.so

最后一步把这个xx.so添加到php.ini文件,重启服务器即可生效。

你可能感兴趣的:(linux,php,mysql)