我正在 PHP 中调试 Web 服务,但没有工具可以将 XDEBUG_SESSION_START 添加到单个有问题的远程服务器,该服务器存在我的测试服务器中不会发生的问题。在相关服务器向 Web 服务发出 GET 请求之前,我确实提前知道了。即使XDEBUG_SESSION_START未发送参数,是否有任何方法可以让 Xdebug 为下一个请求运行?
我正在尝试使用 phpstorm 设置 xdebug 调试器。我在 Windows 7 上运行 xampp。php.ini 中的 Xdebug 部分:
[XDebug]
zend_extension = "C:\xampp\php\ext\php_xdebug-2.2.5-5.5-vc11.dll"
xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "C:\xampp\tmp"
xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.idekey = "PHPSTORM"
xdebug.remote_port = 10000
xdebug.trace_output_dir = "C:\xampp\tmp"
Run Code Online (Sandbox Code Playgroud)
在 phpstorm 中我检查了这一点:

另外,我设置了适当的端口:

之后我:
创建书签以使用适当的 IDE 密钥 (PHPSTORM) 启动调试器(在 jetbrain 页面上生成);
使用了 Google Chrome 的特殊扩展,它还为此设置了 cookie:

最后,我什至禁用了防火墙(在此之前我尝试添加规则,但这没有帮助)。
我在这里写的内容并没有帮助我捕获断点。我点击了 IDE 中的“电话按钮”,这也没有帮助。而且,我想强调的是,来自 Xdebug 的传入请求也不是在第一次使用时出现的。
另外,我想提一下,只有 index.php 调试有效。任何控制器/操作都不会,但只有index.php 可以。
在 …
只有一页有这个错误
is_read(): 无法找到包装器“xdebug” - 您在配置 PHP 时是否忘记启用它?
其他页面在启用 xdebug 并在 PhpStorm 中打开监听器的情况下可以正常工作。
如果在 PhpStorm 中禁用 xdebug 侦听器,则不会发生该问题。
我在操作系统 10.11 上使用 xampp5.6.15。我按照此说明安装 xDebug。我的“定制安装说明”如下:

在这个指令中,它没有提到将下载的 tgz 文件放在哪里,所以我只是将其保留在文件夹中downloads,运行后phpize,输出如下:
grep: /usr/include/php/main/php.h: 没有这样的文件或目录 grep: /usr/include/php/Zend/zend_modules.h: 没有这样的文件或目录 grep: /usr/include/php/Zend /zend_extensions.h:没有这样的文件或目录 配置:PHP Api 版本:
Zend 模块 Api 编号:
Zend 扩展 Api 编号:
找不到 autoconf。请检查您的 autoconf 安装和 $PHP_AUTOCONF 环境变量。然后,重新运行此脚本。
我想这是因为 xdebug 文件夹不在正确的位置,我尝试将其移动到xamppfiles/和xamppfiles/modules/以及其他一些地方,但没有任何效果。
那么有什么问题吗?我应该将文件夹放在哪里?
我正在使用 PphpStorm 2016.1。php引擎是php 7.0.4,xdebug版本是2.4.0。我也在使用 ubuntu 16.04。问题是我可以调试每个请求。但是当我想调试发布请求时,$_POST全局变量变得空变量。在调试模式下发布表单可以正常工作,但是当使用 PhpStorm 启用调试时,我看不到$_POST变量的数据。我做了一切,但没有找到解决方案。
我正在尝试在我的 Docker 版本上设置 Xdebug,但它没有按我的预期工作。我添加RUN docker-php-ext-enable xdebug到我的 Dockerfile 中,添加了以下 xdebug.ini 并将其映射到/usr/local/etc/php/conf.d/:
[xdebug]
xdebug.remote_enable=1
xdebug.idekey=PHPSTORM
xdebug.profiler_enable=0
xdebug.max_nesting_level=700
xdebug.remote_autostart=off
xdebug.remote_host=192.168.0.1 # your ip
xdebug.remote_port=9001
xdebug.remote_connect_back=1
; with sane limits
html_errors = On
xdebug.default_enable=1
xdebug.var_display_max_depth = 5
xdebug.var_display_max_children = 256
xdebug.var_display_max_data = 1024
Run Code Online (Sandbox Code Playgroud)
另外,当我尝试添加时,RUN pecl install xdebug我最终遇到错误:
Step 26/31 : RUN pecl install xdebug
---> Running in e8ab055ec4a9
pecl/xdebug is already installed and is the same as the released version 2.5.5
install failed
ERROR: Service 'web' failed to …Run Code Online (Sandbox Code Playgroud) 当 xdebug 提供堆栈跟踪时,它可以创建链接以在文本编辑器中的特定行打开文件。例如,如果安装了 subl 处理程序,以下配置将在 Sublime 中打开文件:
xdebug.file_link_format="subl://open?url=%f&line=%l"
Run Code Online (Sandbox Code Playgroud)
如何为 VS Code 设置 file_link_format?
Web 上使用 VSCode 和 WSL 进行 PHP 调试的大多数示例都使用 Xdebug 2.x php.ini 设置。这些不再适用于 3.0 版本。有关更改的详细信息,请参阅Xdebug 升级。
以下内容对我来说适用于一个带有单个文件的 PHP 项目,只是为了测试调试。使用 Ubuntu 20.04、WSL2、Xdebug 3.02 以及 Felix Becker 的 VSCode 扩展远程 WSL 和 PHP 调试。
我必须在我的系统上修改/etc/php/7.3/apache2/php.ini和/etc/php/7.3/cli/php.ini。希望这对你们有用。
php.ini
[xdebug]
zend_extension = ./lib/php/20180731/xdebug.so
xdebug.start_with_request = trigger
xdebug.mode = debug
xdebug.discover_client_host = 1
xdebug.log = /tmp/xdebug_remote.log
xdebug.client_port = 9003
Run Code Online (Sandbox Code Playgroud)
启动.json
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9003,
"stopOnEntry": true,
"log": true,
"pathMappings":
{
"/var/www/html/test": "${workspaceRoot}"
} …Run Code Online (Sandbox Code Playgroud) 我使用 Homebrew 安装了 PHP brew install php。
php -v给我:
PHP 8.0.9 (cli) (built: Jul 29 2021 17:21:21) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.9, Copyright (c) Zend Technologies
with Zend OPcache v8.0.9, Copyright (c), by Zend Technologies
Run Code Online (Sandbox Code Playgroud)
这样 PHP 就安装成功了,并且也作为一个服务运行在brew services start php.
要安装 xdebug,我使用的命令pecl install xdebug似乎工作正常,但最后我收到消息:
Build process completed successfully
Installing '/usr/local/Cellar/php/8.0.9/pecl/20200930/xdebug.so'
Warning: mkdir(): File exists in System.php on line 294
PHP Warning: mkdir(): File exists in /usr/local/Cellar/php/8.0.9/share/php/pear/System.php on …Run Code Online (Sandbox Code Playgroud) 我一直有一段时间让Eclipse调试我的CakePHP应用程序.我试过阅读几个教程(没有一个很好).我尝试过使用Zend和XDebug.
一旦它正确设置,我甚至不确定我应该如何使用这个东西.
我尝试在我的PHP代码中设置一个断点,右键单击文本编辑器中的PHP文件,然后选择"debug php web application",但它从未达到过断点.它在eclipse中打开了一个浏览器,其中一些GET参数附加到我的普通URL:
?debug_host = 192.168.1.2%2C127.0.0.1&start_debug = 1&debug_port = 10000&original_url = HTTP%3A%2F%2Flocalhost%2Fparticipants&send_sess_end = 1&debug_stop = 1&debug_start_session = 1&debug_no_cache = 1331422177353&debug_session_id = 1000
我在我的项目php调试属性中不确定的一件事是PHP可执行文件字段.它被自动设置为'none',因此我必须创建一个指向'/ usr/bin/php'的条目.也许这不正确?
我创建了一个简单的应用程序,其中包含一个只有几个echo语句的php文件.我无法让调试器在这个中遇到断点.
这是我的phpinfo():https://sites.google.com/site/kylephpinfo/phpinfo.html ? attredirects = 0& d = 1
我从来没有遇到过调试器在我生活中工作的麻烦.