3

我想从 NetBeans 7.1 调试 PHP。我的网络服务器是 IIS。我首先发现 NetBeans 尝试使用 XDebug,下载它,将 DLL 复制到适当的文件夹。现在我想知道如何正确配置它。

在线 php 配置分析器给了我以下建议:

  1. 下载php_xdebug-2.1.4-5.3-vc9-nts.dll
  2. 将下载的文件移动到 C:\Program Files\PHP\v5.3\ext
  3. 编辑 C:\Program Files\PHP\v5.3\php.ini 并添加该行
  4. zend_extension = C:\Program Files\PHP\v5.3\ext\php_xdebug-2.1.4-5.3-vc9-nts.dll

重启网络服务器

好的,一切都清楚了,除了在 php.ini 的哪个部分放置该行。我很怀疑。

另一方面,Netbeans 抱怨:

在 224 秒内未检测到来自 xdebug 的连接。原因可能是未安装或未正确配置 xdebug。确保您的 php.ini 文件包含以下条目:

xdebug.remote_enable=on

xdebug.remote_handler=dbgp

xdebug.remote_host=localhost(或主机名)

xdebug.remote_port=9000

再一次,将这些行放在 php.ini 的哪个部分

4

5 回答 5

2

您可以在 php ini 文件的任何位置添加 xdebug 行,最有可能在最后。要检查 xdebug 是否正确安装,请检查 phpinfo 函数和调试客户端。您可以在 xdebug 主页上获取调试客户端: http ://xdebug.org/docs/install 。当您使用开关 -i 9000 -r 9000 启动它时,它应该连接到 xdebug,然后您可以使用 netstat -an | 验证它。grep 9000。然后您可以加载示例网页并查看调试客户端的输出。以防万一检查您的 xdebug 日志。当它与 debugclient 一起使用时,您有一个很好的证明,您可以使其与您的 IDE 一起使用。这对我有很大帮助:http ://forums.netbeans.org/topic1513-30.html 。如果 xdebug 正在侦听端口 9000,您还可以检查此脚本:

<?php 
     $address = '127.0.0.1'; 
     $port = 9000; 
     $sock = socket_create(AF_INET, SOCK_STREAM, 0); 
     socket_bind($sock, $address, $port) or die('Unable to bind'); 
     socket_listen($sock); 
     $client = socket_accept($sock); 
     echo "connection established: $client"; 
     socket_close($client); 
     socket_close($sock); 
?>

它对我不起作用,但试试看?我在我的虚拟机上安装了 lighttpd 和 xdebug,并在远程服务器上使用了反向 shell。我使用科莫多 IDE。

于 2012-05-01T19:23:20.403 回答
2

您可以将其添加到文件中的任何位置。如果您搜索“extension”或“.so”或“.dll”,我相信您会在 php.ini 文件中找到一个示例。我对 Windows 不太熟悉,但是在 linux 上,在终端中输入“php -m”会列出所有当前加载的模块。Xdebug 应该列出两次,一次在 PHP 下,一次在 Zend 下。

例子

; php -m

输出...

[PHP Modules]
mysql
mysqli
curl
xdebug

[Zend Modules]
xdebug

您可以检查几件事来帮助解决这个问题,即在网页上输出 phpinfo() 并检查您正在编辑的 php.ini 是否是正在加载的。它列在“默认配置文件”下

同样在您重新启动服务器后。检查服务器日志以确保配置文件中没有任何错误。

我在 Netbeans 中运行了 xDebug,但我没有使用它们在错误消息中提供的配置。我只在我的 .ini 文件中添加了一行:

zend_extension=<path_to_extension>/xdebug.so

Zend 扩展(至少在我的设置中)需要一个完整的路径,所以检查路径是否完整(看起来像你的)并且它是正确的。

您也可以尝试将扩展名放在“extension_dir”下的 phpinfo 中列出的默认扩展文件夹中。

于 2012-05-01T19:28:56.210 回答
1

我有一个类似的问题,并遇到了一个帖子来解决这个问题。我的 html 表单 (testform.html) 正在调用 php 脚本 (runQuery.php),而 Netbeans 无法在设置的断点处中断。

通过在类似这样的论坛上搜索检查 php.ini 和 Netbeans 中的所有配置设置后,我发现如果项目的索引文件是 PHP 文件,netbeans 只会在断点处中断。这非常重要,否则您将花费​​数小时试图找出断点不起作用的原因。

在 Netbeans 中,进入文件/项目属性/运行配置并检查索引文件是否为 PHP 文件。就我而言,我将索引文件从 testform.html 更改为 testform.php 并且它起作用了,我能够在断点处中断。

亚萨尔。

于 2014-03-09T12:39:41.100 回答
0

如果你在 php.ini 中尝试过 xdebug 的东西,但它不起作用,我也遇到了同样的问题。我阅读了在线帮助无济于事。后来我注意到我的 url 显示了错误的地址:

localhost/todolist/web/web/index.php?XDEBUG_SESSION_START=netbeans-xdebug

当它应该是

localhost/todolist/web/index.php?XDEBUG_SESSION_START=netbeans-xdebug

我纠正了它并让它工作。

于 2012-06-13T15:18:14.280 回答
0

我遇到了类似的问题,感谢 J.Money 关于运行PHP -M的建议,我发现问题是我的路径中有一个空格,因此需要双引号:

解决方法就是改变:

zend_extension = C:\Program Files\PHP\v5.3\ext\php_xdebug-2.1.4-5.3-vc9-nts.dll

至:

zend_extension = "C:\Program Files\PHP\v5.3\ext\php_xdebug-2.1.4-5.3-vc9-nts.dll"

我也将此记录为错误:http ://bugs.xdebug.org/view.php?id=922

于 2013-02-09T14:36:25.037 回答