我试图在AWS云中的远程服务器上安装Xdebug以进行分析。我安装了Xdebug,我使用phpinfo()检查,我保留了一些设置,以启用服务器上的分析选项,它已启用,我验证。
我把profiler的输出日志保存在远程服务器的一个目录中。现在我想使用Kcachedgrind打开这些文件。所以我安装了Kcachesgrind。
我在PHP.ini文件中使用的设置如下:
zend_extension="/opt/lampp/lib/php/extensions/no-debug-non-zts-20060613/xdebug.so"
xdebug.profiler_output_dir = "/opt/lampp/htdocs/profiler/logs"
xdebug.profile_output_name = cachegrind.out.%t-%s
xdebug.remote_enable=On
xdebug.remote_host="ip-10-125-11-57"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.show_local_vars=On
xdebug.collect_return=On
xdebug.collect_params=4
xdebug.profiler_enable=On
xdebug.profiler_enable_trigger=1
在上面的设置中,您可以看到名为xdebug的文件。Remote_host通常是本地主机,但我在远程服务器上,所以我保留了服务器的主机名。当我试图使用Kcachegrind打开文件时,我得到了以下错误。
Kcachegrind: Can't connect to X server
你基本上有两个相同的选择:
-
从远程服务器下载文件到本地计算机并在那里调试它们。如果你讨厌每次都要下载文件,那就自动完成这个任务。
-
使用命令行实用程序来评估文件(xdebug文档中提到了ct_annotate),参见这里:http://xdebug.org/docs/profiler
我强烈建议选择1。
请注意,Kcachegrind是一个带有GUI(图形用户界面)的程序,意思是:它有窗口和按钮之类的东西。您的远程服务器通常不需要任何GUI软件,因此不支持安装窗口和按钮之类的东西(没有X服务器,没有KDE等…)。虽然TeTeT解决方案在理论上是可行的,但请不要在远程服务器上安装X并通过vnc连接。它是缓慢的,它将使用大量的硬盘空间和内存,是一个陡峭的学习曲线对于初学者。
如果您真的想在服务器上调试它,您需要为它安装X和桌面,并通过vnc连接。
也许将调试和配置文件复制到本地系统并在那里检查它们也会起作用