mougrim / php-xdebug-proxy
Xdebug (dbgp) 代理
Requires
- php: >=7.4
- amphp/socket: ^0.10.8
Requires (Dev)
- ext-dom: *
- amphp/log: ^1.0.0
- friendsofphp/php-cs-fixer: ^3.5
- phpro/grumphp: ^1.5
- phpunit/phpunit: ^9.0
- roave/security-advisories: dev-latest
- vimeo/psalm: ^4.20
Suggests
- ext-dom: Required for parse XML by default
- amphp/log: Required for write logs by default
Conflicts
- amphp/parallel-functions: =1.1.0
This package is auto-updated.
Last update: 2024-09-09 05:02:47 UTC
README
这是一个基于 amphp 的可扩展的 dbgp xdebug 代理,使用的是您所熟悉的语言 - PHP。
该想法在文档 在 PhpStorm 中使用 Xdebug 和 DBGp 代理进行多用户调试 中进行了描述。
主要优势是此代理是用 PHP 编写的 - 您所熟悉的语言。
安装
此软件包可以作为 Composer 项目或依赖项安装。
composer.phar create-project mougrim/php-xdebug-proxy
或者作为依赖项
composer.phar require mougrim/php-xdebug-proxy --dev
为了解析 XML,您应该安装 ext-dom
。
为了默认情况下写入日志,您应该安装 amphp/log
(如果将 php-xdebug-proxy
作为依赖项安装,请使用 --dev
)
composer.phar require amphp/log '^1.0.0'
运行
您可以使用以下命令
bin/xdebug-proxy
代理将使用默认配置运行
Using config path /path/to/php-xdebug-proxy/config
[2019-02-14 10:46:24] xdebug-proxy.NOTICE: Use default ide: 127.0.0.1:9000 array ( ) array ( )
[2019-02-14 10:46:24] xdebug-proxy.NOTICE: Use predefined ides array ( 'predefinedIdeList' => array ( 'idekey' => '127.0.0.1:9000', ), ) array ( )
[2019-02-14 10:46:24] xdebug-proxy.NOTICE: [Proxy][IdeRegistration] Listening for new connections on '127.0.0.1:9001'... array ( ) array ( )
[2019-02-14 10:46:24] xdebug-proxy.NOTICE: [Proxy][Xdebug] Listening for new connections on '127.0.0.1:9002'... array ( ) array ( )
因此,默认情况下,代理监听 127.0.0.1:9001
以接受 IDE 注册连接,并监听 127.0.0.1:9002
以接受 xdebug 连接,使用 127.0.0.1:9000
作为默认 IDE 和具有键 idekey
的预定义 IDE。
配置
如果您想配置监听端口等,您可以使用自定义配置路径。只需将 config
目录复制到您的自定义路径即可
cp -r /path/to/php-xdebug-proxy/config /your/custom/path
这里有 3 个文件
config.php
:<?php return [ 'xdebugServer' => [ // xdebug proxy server host:port 'listen' => '127.0.0.1:9002', ], 'ideServer' => [ // if proxy can't find ide, then it uses default ide, // pass empty string if you want to disable default ide // defaultIde is useful when there is only one user for proxy 'defaultIde' => '127.0.0.1:9000', // predefined ide list in format 'idekey' => 'host:port', // pass empty array if you don't need predefined ide list // predefinedIdeList is useful when proxy's users aren't changed often, // so they don't need to register in proxy each proxy restart 'predefinedIdeList' => [ 'idekey' => '127.0.0.1:9000', ], ], 'ideRegistrationServer' => [ // host:port for register ide in proxy // pass empty string if you want to disable ide registration 'listen' => '127.0.0.1:9001', ], ];
logger.php
:您可以自定义一个记录器,该文件应返回一个对象,它是\Psr\Log\LoggerInterface
的实例;factory.php
:您可以为代理中使用的类进行自定义,该文件应返回一个对象,它是Factory\Factory
的实例。
然后更改配置并运行
bin/xdebug-proxy --configs=/your/custom/path/config
扩展
如上所述,您可以使用实现 Factory\Factory
的自定义工厂来自定义类。默认情况下使用 Factory\DefaultFactory
工厂。
最强大的是请求准备器。您可以覆盖 Factory\DefaultFactory::createRequestPreparers()
。它应返回一个实现 RequestPreparer\RequestPreparer
接口的对象数组。
请求准备器将在以下情况下被调用
- 在从 IDE 发送请求时,从第一个到最后一个
- 在从 xdebug 发送请求时,从最后一个到第一个
您可以使用请求准备器,例如,更改文件路径(在断点和执行文件中)。
请求准备器的一个好例子是 RequestPreparer\SoftMocksRequestPreparer
。您可以在 Factory\SoftMocksFactory
中看到其使用方法。
与软模拟一起使用
对于软模拟,您可以使用softMocksConfig
配置目录。
bin/xdebug-proxy --configs=/path/to/php-xdebug-proxy/softMocksConfig
如果您想提供自定义软模拟
初始化脚本的路径,请复制softMocksConfig
并修改config.php
。
... 'softMocks' => [ // if empty string, then vendor/badoo/soft-mocks/src/init_with_composer.php is used 'initScript' => '/your/custom/init-script.php', ], ...
有关更多信息,请参阅软模拟项目中的文档。
谢谢
特别感谢Eelf提供的代理示例smdbgpproxy。
感谢Dmitry Ananyev在文档方面的帮助。