PhpStorm不会打开xdebug profiler快照文件

时间:2017-07-22 21:09:28

标签: php phpstorm xdebug xdebug-profiler

=============================================== ==========

忽略此帖。可以在PHP auto_prepend_file causes xdebug profiler to fail

找到关于此问题的简单陈述。

=============================================== ==========

原帖(和更新)

当我尝试使用以下命令在PhpStorm中打开xdebug探查器快照时

  

菜单栏>>工具>>分析xdebug profiler快照...

我选择了xDebug创建的文件,但我遇到了这个错误:

  

错误:探查器快照格式不正确:名称格式不正确

我没有重命名快照。它是默认名称:cachegrind.out.8008

的php.ini

<!-- language:lang-none -->
[xdebug]
zend_extension="php_xdebug-2.5.5-5.6-vc11.dll"
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=1
xdebug.profiler_enable=1
xdebug.profiler_output_dir="C:\websites\xdebug"
; xdebug.profiler_output_name= ; Commented out to allow default name
xdebug.idekey=PHPSTORM

PhpStorm为什么不打开快照?我应该设置自定义xdebug.profiler_output_name选项吗?

更新

我关闭了所有项目,从PhpStorm 2017.1.4升级到2017.2,重新启动了Apache,删除了旧快照并创建了一个新快照。 新的打开没有问题。

更新2

似乎如果我通过调用>php script.php从命令行运行文件,则可以打开生成的快照。如果我从浏览器运行相同的文件(意味着我通过Apache网络服务器:localhost/script.php),则无法打开快照。

更新3

我还注意到,当我从浏览器执行时,在强制停止Apache进程之前,我无法删除快照。我正在分析的PHP文件没有说明:仅<?php。以下是创建的两个快照:

从命令行执行时(PhpStorm打开此文件没有问题):

version: 1
creator: xdebug 2.5.5 (PHP 5.6.1-dev)
cmd: C:\path\to\script.php
part: 1
positions: line

events: Time

fl=(1) C:\path\to\script.php
fn=(1) {main}

summary: 0

1 0

从浏览器执行时(PhpStorm无法打开此快照):

version: 1
creator: xdebug 2.5.5 (PHP 5.6.1-dev)
cmd: C:\path\to\script.php
part: 1
positions: line

events: Time

fl=(2) C:\path\to\script.php
fn=(1)

summary: 0

1 0

更新4

罪魁祸首是auto_prepend_file ini setting。我在Apache Vhosts中有以下设置:

php_value auto_prepend_file "C:\path\to\init.php"

此文件在Apache执行从浏览器调用的脚本之前运行。当我从命令行运行脚本时,此设置(在我的Apache Vhosts配置中)永远不会生效,因此init.php不会运行。相反,如果我将设置移动到php.ini,它也会影响命令行执行,那么从命令行生成的快照也会停止工作。

如果删除auto_prepend_file设置,生成的探查器快照可以在PhpStorm中打开而不会出现问题。当然,这不是一个修复,因为我需要执行auto_prepend_file才能使我的应用程序正常工作。

0 个答案:

没有答案