标签归档:docker

(php8.2)phpstorm xdebug远程调试docker中的项目

注意:本文基于php8.2,不同版本的php对应不同版本的xdebug。对应的xdebug配置也不同。php5.6版本的配置在另一篇文章中。

安装xdebug

请参考另一篇文章,如何在linux上安装xdebug插件。

修改php.ini文件

开启xdebug扩展,并且配置xdebug配置信息。

zend_extension = xdebug(注意:不是extension = xdebug)

[xdebug] 
zend_extension="/www/server/php/82/lib/php/extensions/no-debug-non-zts-20220829/xdebug.so"
xdebug.log=xdebug.log
xdebug.mode=debug
xdebug.start_with_request = yes
xdebug.remote_handler="dbgp"
xdebug.client_port = 9001
; 此配置值就是下面的固定字符串,不用替换为某个ip
xdebug.client_host= "host.docker.internal"
xdebug.idekey="PHPSTORM"
xdebug.discover_client_host=true

配置phpstorm

如下图端口配置为9001,请和php.ini中的端口保持一致,调试时,php中的xdebug插件会将调试信息通过此端口请求到phpstorm(xdebug为客户端,phpstorm为服务端,组成一个c/s结构,通讯协议为DBGp)

配置xdebug端口

配置phpstorm的端口,需要和php.ini中的保持一致,phpstorm作为服务端将监听这个端口,接收来自xdebug的调试信息。
配置DBGp proxy

配置服务器路径和本机项目路径的map(映射),这样phpstorm才能将接收到的调试信息应用到本地的对应文件的代码中。
配置文件路径映射

配置调试项目为php remote debug。
配置远程调试

点击调试按钮,phpstorm将开始监听调试信息,命中断点。
点击调试按钮

使用docker和堡塔快速搭建php开发环境

前言

本文基于mac平台。

因为要使用php8.2和laravel10来开发系统,在搭建开发环境的时候着实是废了不少劲。探索了不少方案,终于找到了一个最佳实践,这里做一个总结。

先说下尝试过的方案

  1. mxsrvs,之前在开发php5.6和php7.4的系统时,都是使用的mxsrvs作为集成开发环境。问题是这个环境中不支持php8,尝试自己编译一个php8的版本适配到mxsrvs,最终因为遇到 https://segmentfault.com/q/1010000044189821?_ea=317144307 这个问题,导致无法在mxsrvs上使用php8,遂放弃此方案。另外已经和mxsrvs的作者取得联系,老哥已经停止维护此工具很久了,非常可惜。为了方案的可持续性,所以放弃mxsrvs。

  2. phpstudy,当初在windows平台开发的时候,使用的就是phpstudy,下载了一个mac版本的phpstudy看了下,不支持php8,而且软件完成度很低,bug不少,不像是一个可用的东西,遂放弃此方案。

  3. laravel herd,laravel自己开发的一个集成开发环境。这个项目在刚开始和快速迭代的阶段,功能完成度较低,无法方便的创建项目,无法管理php插件,遂放弃此方案。

  4. mamp,此工具pro版本收费,但是可以找到破解版的,不好的地方是不能同时支持多个mysql版本,遂放弃此方案。

  5. 使用docker+堡塔的方式搭建开发环境。因为平时我服务器上使用的就是堡塔面板,所以对在宝塔中的各项操作都非常熟悉,加上docker可快速部署的特性,最后选择使用这个方案。在落地这个方案的时候也是遇到了不少的问题,但最终都一一克服,最终形成自己的这套最佳实践。本系列搭建php开发环境文章从各个环节来描述此方案的搭建过程,包括单元测试、xdebug调试如何实现等。

参考文章:https://blog.csdn.net/weixin_44467587/article/details/130265470

安装docker、运行堡塔镜像

  1. 官网下载docker客户端,并登录账号
  2. pull btpanel/baota镜像,在公共库中搜索即可。
  3. 创建和运行容器,指定参数。volumnes参数可以映射堡塔的/www/wwwroot目录,此目录映射到本机的一个目录,将源码存放到这个目录即可。
    在docker中创建和运行堡塔镜像
  4. 浏览器访问 http://localhost:8888/btpanel 进入堡塔
    默认用户名:btpanel
    默认密码:btpaneldocker
    默认ssh密码:btpaneldocker
    数据库root密码需要重置一下,否则无法创建数据库,应该是是做镜像的人没做好。
  5. 创建网站,指定一个域名比如test.com
  6. 修改mac本地的hosts文件 sudo vi /private/etc/hosts,添加127.0.0.1 test.com即可在浏览器中通过test.com访问站点。