php - 在远程服务器上安装 Xdebug 以进行分析

标签 php ubuntu profiling xdebug kcachegrind

我正在尝试在 AWS 云中的远程服务器上安装 Xdebug 以进行分析。我安装了 Xdebug 我使用 phpinfo() 检查并保留了一些设置以在服务器上启用分析选项,我验证它已启用。

我将 pro filer 的输出日志保存在远程服务器上的目录中。现在我想使用 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 连接。它很慢,会占用大量的硬盘空间和内存,对于初学者来说是一个陡峭的学习曲线。

    关于php - 在远程服务器上安装 Xdebug 以进行分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16891349/

    相关文章:

    php - SQL 关注和关注者

    php - 如何将我的 Android 应用程序连接到我的 PHP/MySQL 后端?

    linux - 安排本月最后一个星期日的 crontab 作业

    java - Ubuntu 16.04 LTS - 如何为 perf 工具启用符号

    php - 分析 PHP 脚本的最简单方法

    c++ - Cachegrind:为什么有这么多缓存未命中?

    php - 使用 php 放入 p 标签?

    php - Opencart 2.0.3.1 - 从数据库检索数据

    ubuntu - CFEngine 策略未在 Ubuntu 节点上执行

    ubuntu - 如何防止 Jenkins 在启动 Ubuntu 16.04 时自动启动?