我最近在服务器上安装了 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 中。
希望这有帮助。