php编译pdo_mysql扩展记录
这次作死,直接用默认配置安装了php。什么扩展都没有添加。结果一直在编译缺失的各种扩展。但是最后还是失败了,仅用做记录用。
在编译到pdo_mysql扩展的时候,就搞不定了。
在进行make
操作的时候,出现了如下错误:
1 | /usr/local/src/php-7.0.14/ext/pdo_mysql/php_pdo_mysql_int.h:27:34: 致命错误:ext/mysqlnd/mysqlnd.h:没有那个文件或目录 |
这是走的弯路
我以为是mysqlnd没有编译,我接着去编译mysqlnd扩展了。
然后在./configure
的时候,结果又提示我:
1 | configure: error: Cannot find OpenSSL's <evp.h> |
我以为是openssl-devel没有安装,我接着安装openssl-devel:
1 | [root@bogon mysqlnd]# yum install openssl openssl-devel |
结果提示我已经安装了,那我强行指定路径吧:
1 | [root@bogon mysqlnd]# ./configure --with-openssl=/usr/include/openssl |
结果还是不行,这下两边路都走不通了,我就去网上查询了。结果还是查询不到什么有用的资料
转回正道
我后来想,我直接改源码试试看呢,把include
加载文件写成绝对目录。
说干就干
我先看看这个报错的地方。
文件在**/usr/local/src/php-7.0.14/ext/pdo_mysql/php_pdo_mysql_int.h:27:34**
我打开该文件,修改第27行的内容:
1 |
我的源代码的目录是**/usr/local/src/php-7.0.14/**,于是我就改成如下所示:
1 |
我再进行编译:
1 | [root@bogon pdo_mysql]# make clean |
发现有效果,报错的地方变了,我接着改,这里提示报错的地方还是:**/usr/local/src/php-7.0.14/ext/pdo_mysql/php_pdo_mysql_int.h:69:39**,但是行数编程69了,我把69行改成如下所示:
1 |
继续,发现报错信息又变了:
1 | [root@bogon pdo_mysql]# make clean |
我将文件**/usr/local/src/php-7.0.14/ext/pdo_mysql/pdo_mysql.c:64:45**改成如下所示:
1 |
继续编译:
1 | [root@bogon pdo_mysql]# make clean |
这样就成功了。接下来我们就可以继续make install
进行安装了。
1 | [root@bogon pdo_mysql]# make install |
我们修改一下配置文件,添加下面的内容到配置文件中:
1 | extension=pdo_mysql.so |
然后我们测试扩展是否安装成功了:
1 | [root@bogon pdo_mysql]# php -m |
报错了。看来我们还需要mysqlnd扩展:
然后还是提示找不到openssl的错误。
我接着去网上搜了一下。
还是找不到答案,我查了一下,这个好像是一个bug,一直没有修复。
解决办法只能是重装php来解决了。