0

我已经设置了 Xdebug。它有效。我可以调试代码。但是我在调​​试外部 php 代码时遇到了一个问题,它确实达到了我设置的断点。

这里有更多细节。

从表单的操作调用外部代码。

<form name="htmlform" method="post" action="contact_form_send.php">

我在contact_form_send.php中有一些代码,例如以下

 <?php

if(isset($_POST['email'])) { $email_to = "xxx@xxx.com"; $email_subject = "test";

我在第一行设置断点。它从未击中它。但是,如果我将代码嵌入到与表单相同的文件中。我可以设置断点,单步执行代码。我知道 xdebug 正在工作,因为我看到状态栏说

我是 netbeans 和 php 的新手。如何调试外部 php 代码?

谢谢你的帮助。

这是我的 Xdebug 配置。

[X调试]

zend_extension = "C:\xampp\php\ext\php_xdebug.dll"

xdebug.profiler_append = 0

xdebug.profiler_enable = 1

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_handler = "dbgp"

xdebug.remote_host = "127.0.0.1"

xdebug.trace_output_dir = "C:\xampp\tmp"

xdebug.remote_port = 9080

更新: 刚刚让它工作。我正在调试的索引文件是 htm 文件而不是 php.ini 文件。它在操作中调用了外部 php 文件。XDebug因此无法连接到服务器,卡在“等待连接”。我将索引文件的扩展名更改为 php。现在一切正常。但是我不知道这是否有意义。php 代码确实从 htm 文件中调用并运行。为什么我必须将索引文件的扩展名更改为php才能调试外部代码?我错过了配置中的某些内容吗?

谢谢。

4

1 回答 1

0

我没有尝试过你的场景,但我怀疑问题是表单没有传输调试器触发参数。将以下隐藏字段添加到您的表单中,并查看它是否在提交时触发调试器:

<input type="hidden" name="XDEBUG_SESSION_START" value="netbeans-xdebug" />

有了这个,HTML 页面就不需要具有 .php 扩展名。

于 2013-10-30T23:27:04.320 回答