一、问题背景
旧项目后端采用 ThinkPHP5 开发,为了提升后端服务性能和开发体验,决定采用 ThinkPHP8 重构。本地 MAC 电脑成功编译安装 PHP8.4.3、PHP8.3.16,测试链接 MySQL 报错。
二、问题描述
编译安装 PHP8.4.3 步骤如下:
- php 官网下载 php-8.4.3.tar.gz,解压并进入解压后的目录。
- 生成编译配置文件 /configure –prefix=/usr/local/php-8.4.3 –with-config-file-path=/usr/local/php-8.4.3/etc。
- 编译并安装 make && make install。
- 编译安装 pod_mysql、mysqlnd 扩展。具体方法参考 PHP 安装 bcmath 扩展步骤
- 修改 PHP 配置文件 /usr/local/php-8.4.3/etc/php.ini,具体如下
extension=pdo_mysql
extension=mysqlnd
-
- 测试 MySQL 连接报错“Bad handshake”,测试脚本及报错截图如下
怀疑 MAC 系统和 PHP8.4.3 版本可能存在兼容性问题,于是按照以上步骤安装 PHP8.3.16,然后连接数据库报错“SQLSTATE[HY000] [2006] MySQL server has gone away”
三、解决方法
检索尝试各种方案,排除了 PHP 版本、MySQL 版本、操作系统问题,可能是编译安装PHP方式有问题。
最终,在QQ好友「星兄弟」帮助下,借助国产 DeepSeek AI 锁定问题原因,即生成编译配置文件命令需带上 –with-pdo-mysql=mysqlnd –with-mysqli=mysqlnd。
修改后的生成编译配置文件命令
/configure --prefix=/usr/local/php-8.4.3 --with-config-file-path=/usr/local/php-8.4.3/etc --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd
无需单独编译安装 pod_mysql、mysqlnd 扩展。
四、问题验证
修改生成编译配置文件命令后,重新编译安装,测试 MySQL 连接成功!
原创文章,作者:linuxcto,如若转载,请注明出处:https://www.server7.cc/2025/02/05/265.html