PHP连接MySQL配置教程
时间:2026-02-02 14:42:40 297浏览 收藏
对于一个文章开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《PHP关联MySQL环境配置方法》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!
PHP连不上MySQL首要原因是mysqli或PDO_MySQL扩展未启用;需检查php.ini配置、确认CLI与Web环境使用同一配置文件、验证phpinfo()输出,并注意MySQL 8+认证插件兼容性问题。

PHP 为什么连不上 MySQL?先确认 mysqli 或 PDO_MySQL 扩展是否已启用
绝大多数“PHP 无法连接 MySQL”的问题,根源不是配置错,而是扩展根本没加载。PHP 默认不自动启用 MySQL 相关扩展,必须手动开启。
- 检查当前启用的扩展:
php -m | grep -i mysql
—— 应至少看到mysqli或pdo_mysql(推荐两者都开) - Windows 用户:打开
php.ini,取消注释这两行(去掉前面的分号):;extension=mysqli<br>;extension=pdo_mysql
- Linux/macOS(如通过 apt 或 brew 安装):通常需单独安装包,例如 Ubuntu 上运行
sudo apt install php-mysql
,然后重启 Web 服务(sudo systemctl restart apache2或sudo systemctl restart php-fpm) - 用
phpinfo()页面确认:搜索 “mysqli” 或 “PDO Driver for MySQL”,有输出才表示真正生效
连接 MySQL 时提示 “Class 'mysqli' not found” 或 “Driver not found” 怎么办
这是典型的扩展未启用或 PHP CLI 与 Web 使用了不同配置文件导致的错位问题。
- CLI 和 Web 环境可能使用不同的
php.ini:运行php --ini
查看 CLI 加载路径;在 Web 中用phpinfo()查看 Loaded Configuration File - 常见陷阱:Docker 中 PHP 镜像默认不含 MySQL 扩展,需在
Dockerfile中显式安装,例如:RUN docker-php-ext-install mysqli pdo pdo_mysql
- 如果用了 XAMPP/MAMP,不要只改界面里显示的
php.ini,还要确认它实际指向的是哪个文件(有时有多个副本) - Mac 上用 Homebrew 安装 PHP 后,扩展目录可能不在默认路径,需在
php.ini中补全extension_dir,例如:extension_dir = "/opt/homebrew/lib/php/pecl/20220829"
mysqli_connect() 连接失败的常见参数和调试要点
函数本身不报错,但返回 false,必须配合 mysqli_connect_error() 获取真实原因。
- 基础调用格式(不推荐省略端口,尤其 Docker 或非标准部署):
$conn = mysqli_connect('127.0.0.1', 'user', 'pass', 'db_name', 3306); - 避免用
localhost:它会触发 Unix socket 连接,而容器或某些系统下 socket 文件路径不一致,改用127.0.0.1强制走 TCP - MySQL 8+ 默认用
caching_sha2_password认证插件,老版本 PHP(CREATE USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'pass'; - 连接后立即检查错误:
if (!$conn) {<br> die('Connect Error: ' . mysqli_connect_error());<br>}
Docker 环境中 PHP 容器连不上 MySQL 容器的典型配置漏项
网络通、端口映射对,但还是连不上——大概率是 DNS 解析或权限没设对。
- 确保两个容器在同一个自定义网络(不要依赖默认 bridge),例如启动时加
--network mynet,并在docker-compose.yml中统一声明networks - PHP 中连接地址不能写
127.0.0.1或localhost,必须写 MySQL 服务名(如mysql、db),这是 Docker 内置 DNS 提供的主机名 - MySQL 容器必须允许远程连接:在
my.cnf中设置bind-address = 0.0.0.0,并确保用户 host 是%而非localhost - PHP 容器启动时机早于 MySQL 容器就绪:加健康检查或用
wait-for-it.sh类脚本延迟启动,否则第一次连接必然失败
php.ini 不一致,或者 Docker 下硬编码了 localhost。连之前,先跑一句 php -r "var_dump(function_exists('mysqli_connect'));",比猜快得多。以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。
相关阅读
更多>
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
最新阅读
更多>
-
492 收藏
-
260 收藏
-
252 收藏
-
371 收藏
-
179 收藏
-
248 收藏
-
156 收藏
-
134 收藏
-
440 收藏
-
126 收藏
-
442 收藏
-
340 收藏
课程推荐
更多>
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习