使用 Xdebug 设置 PHP 代码分析

使用 Xdebug 设置 PHP 代码分析

我最近在服务器上安装了 Xdebug,目的是使用它进行代码分析。它似乎安装正确,phpinfo 列出了以下内容:

xdebug.profiler_enable       On                       On  
xdebug.profiler_enable_trigger Off                    Off  
xdebug.profiler_output_dir   /var/www/vhosts/xdebug   /var/www/vhosts/xdebug  
xdebug.profiler_output_name cachegrind.out.%p        cachegrind.out.%p

但是,我无论如何也想不通为什么当我运行 PHP 脚本时没有创建 cachgrinds。

我是否遗漏了什么或理解有误?

答案1

尝试删除选项

xdebug.profiler_enable_trigger Off                    Off  
xdebug.profiler_output_dir   /var/www/vhosts/xdebug   /var/www/vhosts/xdebug  
xdebug.profiler_output_name cachegrind.out.%p        cachegrind.out.%p

第一个是默认的,所以它是多余的。删除其他两个将使您能够找出问题出在这些选项上,还是其他什么。

重新启动 Apache,进入 php 页面并查看 /tmp 中是否生成任何输出。这是输出日志的默认位置。

如果生成了某些内容,那么您可以相当肯定这是输出目录的权限问题。

检查在 /tmp 中生成的文件的所有者,并确保用户对 /var/www/vhosts/xdebug 具有写权限(来自您的原始配置)并重新添加您最初的选项。

答案2

我认为现在回答已经太晚了。

我使用 pecl 安装了 xdebug,我刚刚在 /etc/php5/apache2/php.ini 中通过添加来激活它

extension=xdebug.so
xdebug.default_enable=1; in my setting, i set this parameter to 0
xdebug.scream=1
xdebug.profiler_enable=1 ; this activate the profiler by default. 
;You can put it off (0), but should activate it by triggring.
xdebug.profiler_enable_trigger=1
; if you do like this, you need to call your script by adding XDEBUG_PROFILE=1 
;to your url for example: http://mytest/test.php?XDEBUG_PROFILE=1

您应该重新启动 Web 服务器并从导航器调用 php 页面。默认情况下,输出将创建在 /tmp 中。

希望这有帮助。

相关内容