我想从NetBeans 7.1调试PHP。我的Web服务器是IIS。 我首先发现NetBeans尝试使用XDebug,下载它,将DLL复制到适当的文件夹。现在我想知道如何正确配置它。
online php config analyser给了我以下建议:
- 下载php_xdebug-2.1.4-5.3-vc9-nts.dll
- 将下载的文件移至C:\ Program Files \ PHP \ v5.3 \ ext
- 编辑C:\ Program Files \ PHP \ v5.3 \ php.ini并添加行
- 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 =上
xdebug.remote_handler = dbgp
xdebug.remote_host = localhost(或hostname)
xdebug.remote_port = 9000
再次,在php.ini的哪个部分放置这些行?
答案 0 :(得分:2)
您可以将xdebug行添加到最有可能的php ini文件中。要检查xdebug是否正确安装,请检查phpinfo函数和debugclient。您可以在xdebug主页上获取debugclient:http://xdebug.org/docs/install。当您使用开关-i 9000 -r 9000启动它时,它应该连接到xdebug,之后您可以使用netstat -an验证它。 grep 9000.然后你可以加载一个示例网页并查看debugclient的输出。以防万一检查你的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。我使用Komodo IDE。
答案 1 :(得分: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扩展(至少在我的设置中)需要一个完整路径,因此检查路径是否已满(它看起来像你的路径)并且它是正确的。
您也可以尝试将扩展程序放在phpinfo中“extension_dir”下的默认扩展文件夹中。
答案 2 :(得分:1)
我有一个类似的问题,并遇到一个帖子来解决问题。我的html表单(testform.html)调用了一个php脚本(runQuery.php),Netbeans无法在设置的断点处中断。
通过在像这样的论坛上搜索检查php.ini和Netbeans中的所有配置设置后,我发现如果项目的索引文件是PHP文件,netbeans将仅在断点处中断。这非常重要,否则你将花费数小时试图弄清楚为什么断点不起作用。
在Netbeans中,进入文件/项目属性/运行配置,检查索引文件是否为PHP文件。在我的情况下,我将我的索引文件从testform.html更改为testform.php并且它工作正常,我能够突破断点。
亚萨尔。
答案 3 :(得分:0)
如果你在php.ini中尝试过xdebug的话 它没有用,我遇到了同样的问题。我在线阅读帮助无济于事。后来我注意到我的网址显示错误的地址:
localhost/todolist/web/web/index.php?XDEBUG_SESSION_START=netbeans-xdebug
应该是什么时候
localhost/todolist/web/index.php?XDEBUG_SESSION_START=netbeans-xdebug
我纠正了这个并让它发挥作用。
答案 4 :(得分: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