失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > linux下创建php的mysql扩展 (pdo_mysql和mysqli)

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

时间:2022-12-27 22:46:59

相关推荐

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: 1012

Zend Module Api No: 1012

Zend Extension Api No: 31012

接下来,就可以进行配置了,这一步要”-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-101目录下生成pdo_mysql.so文件

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

[root@cqs no-debug-zts-1012]# 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-1012/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: 1012

Zend Module Api No: 1012

Zend Extension Api No: 31012

顺利完成。

运行./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: 1012

Zend Module Api No: 1012

Zend Extension Api No: 31012

[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-1012/

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

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

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

[root@cqs no-debug-zts-1012]# 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-1012/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-1012/

xx.so

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

如果觉得《linux下创建php的mysql扩展 (pdo_mysql和mysqli)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。