当前位置: 首页 > 工具软件 > mysqlnd > 使用案例 >

php7 mysqlnd,【原创】解决PHP7编译pdo_mysql扩展报错:ext/mysqlnd/mysqlnd.h:没有那个文件或目录...

戚侯林
2023-12-01

问题背景

PHP7.27 编译pdo_mysql 或者 mysqli 扩展时报错:ext/mysqlnd/mysqlnd.h:没有那个文件或目录

问题截图

在包含自 /path/to/php-7.2.7/ext/pdo_mysql/pdo_mysql.c:32 的文件中:

/path/to/php-7.2.7/ext/pdo_mysql/php_pdo_mysql_int.h:27:34: 错误:ext/mysqlnd/mysqlnd.h:没有那个文件或目录

/path/to/php-7.2.7/ext/pdo_mysql/php_pdo_mysql_int.h:28:50: 错误:ext/mysqlnd/mysqlnd_libmysql_compat.h:没有那个文件或目录

/path/to/php-7.2.7/ext/pdo_mysql/php_pdo_mysql_int.h:69:39: 错误:ext/mysqlnd/mysqlnd_debug.h:没有那个文件或目录

In file included from /path/to/php-7.2.7/ext/pdo_mysql/pdo_mysql.c:32:

/path/to/php-7.2.7/ext/pdo_mysql/php_pdo_mysql_int.h:105: 错误:expected specifier-qualifier-list before ‘MYSQL’

/path/to/php-7.2.7/ext/pdo_mysql/php_pdo_mysql_int.h:120: 错误:expected specifier-qualifier-list before ‘MYSQL_FIELD’

/path/to/php-7.2.7/ext/pdo_mysql/php_pdo_mysql_int.h:125: 错误:expected specifier-qualifier-list before ‘MYSQL_RES’

/path/to/php-7.2.7/ext/pdo_mysql/pdo_mysql.c:64:45: 错误:ext/mysqlnd/mysqlnd_reverse_api.h:没有那个文件或目录

/path/to/php-7.2.7/ext/pdo_mysql/pdo_mysql.c:65: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token

/path/to/php-7.2.7/ext/pdo_mysql/pdo_mysql.c:85: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘pdo_mysql_reverse_api’

/path/to/php-7.2.7/ext/pdo_mysql/pdo_mysql.c: 在函数‘zm_startup_pdo_mysql’中:

/path/to/php-7.2.7/ext/pdo_mysql/pdo_mysql.c:138: 错误:‘pdo_mysql_reverse_api’未声明(在此函数内第一次使用)

/path/to/php-7.2.7/ext/pdo_mysql/pdo_mysql.c:138: 错误:(即使在一个函数内多次出现,每个未声明的标识符在其

/path/to/php-7.2.7/ext/pdo_mysql/pdo_mysql.c:138: 错误:所在的函数内也只报告一次。)

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

问题原因

经定位:locatemysqlnd.h文件确实存在,路径为:/path/to/php-7.2.7/ext/mysqlnd/mysqlnd.h,

不过图示中要引用的mysqlnd.h文件位置却是:/path/to/php-7.2.7/ext/pdo_mysql/etc/mysqlnd/mysqlnd.h,

说到这明白问题所在了吧,不过感觉这是扩展编写存在BUG。

解决方案

既然mysqlnd.h文件是存在的,那么我们来个软链引用过来即可:

ln -s /path/to/php-7.2.7/ext/ /path/to/php-7.2.7/ext/pdo_mysql/etc/

 类似资料: