当前位置: 首页 > news >正文

Docker 初学者需要了解的几个知识点 (七):php.ini

这段配置是 php.ini 文件中针对 PHP 扩展和 Xdebug 调试工具的设置,主要用于让 PHP 支持数据库连接和代码调试(尤其在 Docker 环境中),具体解释如下:

[PHP]
extension=pdo_mysql
extension=mysqli
xdebug.mode=debug
xdebug.client_host=host.docker.internal
xdebug.client_port=9003

1. [PHP]

配置块标识,表明以下配置属于 PHP 核心设置(区分于其他模块的配置,如 [Date][MySQLi] 等)。

2. 数据库扩展配置

extension=pdo_mysql
  • 启用 PHP 的 PDO MySQL 扩展(PDO:PHP Data Objects,数据库访问抽象层)。
  • 作用:ThinkPHP 等现代 PHP 框架默认使用 PDO 连接 MySQL 数据库,此扩展是 PHP 与 MySQL 数据库通信的核心依赖,不启用会导致数据库连接失败。
extension=mysqli
  • 启用 PHP 的 MySQLi 扩展(MySQL Improved,增强版 MySQL 扩展)。
  • 作用:提供另一种连接 MySQL 的方式(支持面向对象和过程化语法),部分旧代码或工具可能依赖此扩展,与 pdo_mysql 配合使用可兼容更多场景。

3. Xdebug 调试工具配置

Xdebug 是 PHP 的调试扩展,用于在 IDE(如 PhpStorm、VS Code)中设置断点、查看变量、单步执行代码等,以下是 Docker 环境中调试的关键配置:

xdebug.mode=debug
  • 设置 Xdebug 的运行模式为 调试模式(Xdebug 3+ 版本新增的模式配置,替代旧版本的 xdebug.remote_enable=1)。
  • 作用:启用调试功能,允许 IDE 与 PHP 进程建立调试连接。
xdebug.client_host=host.docker.internal
  • 指定 Xdebug 连接的 客户端(IDE)主机地址
  • 背景:PHP 运行在 Docker 容器中,而调试用的 IDE(如 PhpStorm)通常安装在宿主机(你的 Windows 电脑)上,容器需要知道宿主机的 IP 才能通信。
  • 作用:host.docker.internal 是 Docker 提供的特殊域名,自动映射到宿主机的 IP 地址(无需手动填写宿主机 IP),确保容器内的 Xdebug 能找到宿主机上的 IDE。
xdebug.client_port=9003
  • 指定 Xdebug 与 IDE 通信的 端口(Xdebug 3+ 版本默认端口为 9003,旧版本为 9000)。
  • 作用:IDE 需要监听这个端口以接收 Xdebug 的调试请求,需在 IDE 中同步设置相同端口(如 PhpStorm 中配置 “Xdebug 端口” 为 9003),否则调试连接会失败。

注意事项

  1. 扩展安装前提:这些配置生效的前提是 PHP 已安装对应的扩展(pdo_mysqlmysqlixdebug)。在 Docker 中,需通过 docker-php-ext-install 命令安装(例如:docker-php-ext-install pdo_mysql mysqli,Xdebug 需单独安装)。
  2. 调试配合:需在 IDE 中开启 “Xdebug 监听”,并确保项目路径映射正确(容器内路径与宿主机路径对应),否则断点可能不生效。

总结:这段配置的核心作用是 让 PHP 能连接 MySQL 数据库,并 配置 Xdebug 实现 Docker 环境下的代码调试,是 ThinkPHP 开发中必不可少的基础配置。

http://www.lryc.cn/news/605904.html

相关文章:

  • LoggerFactory(日志门面框架核心工厂类)详解
  • 【C#设计模式】深入理解常见迭代器模式(Iterator Pattern)
  • 安装 docker compose v2版 笔记250731
  • docker离线安装mysql镜像
  • 内存网格、KV存储和Redis的概念、使用场景及异同
  • 分布式锁ZK与redis
  • Redis 存在哪些问题
  • 【问题】Docker 容器内的应用(如n8n),访问不到外部主机的应用(如mysql)
  • 【单片机】【分布式】从单机到分布式:Redis如何成为架构升级的关键力量
  • react调用接口渲染数据时,这些表格里的数据是被禁选的
  • 【Unity笔记04】数据持久化
  • TypeScript 基础介绍(二)
  • 雷霆战机游戏代码
  • ubuntu22.04系统入门 linux入门 简单命令基础复习 实现以及实践
  • Flask Bootstrap 后台权限管理方案
  • diffusion原理和代码延伸笔记1——扩散桥,GOUB,UniDB
  • 功能强大编辑器
  • PDF源码解析
  • QT Word模板 + QuaZIP + LibreOffice,跨平台方案实现导出.docx文件后再转为.pdf文件
  • WebSocket配置实战:打造稳健高效的消息通信系统
  • 学C笔记——更新于0731
  • 网络攻击新态势企业级安全防御指南
  • C# 枚举器和迭代器(常见迭代器模式)
  • 深入剖析:C++ 手写实现 unordered_map 与 unordered_set 全流程指南
  • 【React】fiber 架构
  • vue 中 props 直接解构的话会数据丢失响应式
  • MakeInstaller: 一款麒麟操作系统安装包制作工具
  • 3DXML 转换为 UG 的技术指南及迪威模型网在线转换推荐
  • DeepSeek笔记(三):结合Flask实现以WEB方式访问本地部署的DeepSeek-R1模型
  • 戴尔笔记本Ubuntu18.04 NVIDIA驱动与cuda环境配置教程