================================================== =======
Игнорируйте это сообщение. Более простой вывод этой проблемы можно найти на PHP auto_prepend_file, из-за чего профайлер xdebug проваливается
================================================== =======
Когда я пытаюсь открыть снимок профайлера xdebug в PhpStorm, используя:
Панель меню >> Инструменты >> Проанализируйте моментальный снимок профайлера xdebug …
Я выбираю файл 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, удалил старые снимки и создал новый. Новый открывается без проблем.
Кажется, если я запустил файл из командной строки, вызвав >php script.php
, сгенерированный моментальный снимок можно открыть. Если я запустил тот же файл из браузера (что означает, что я просматриваю веб-сервер Apache: localhost/script.php
), моментальный снимок не открывается.
Я также замечаю, что когда я запускаю из браузера, я не могу удалить снимок до тех пор, пока я не остановлю процесс 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
Виновником является настройка auto_prepend_file
ini . У меня был следующий набор в Apache Vhosts:
php_value auto_prepend_file "C:\path\to\init.php"
Этот файл запускается до того, как Apache выполнит сценарий, который был вызван из браузера. Когда я запускаю скрипт из командной строки, этот параметр (который находится в моей конфигурации Apache Vhosts) никогда не вступает в силу, поэтому init.php
не запускается. И наоборот, если переместить параметр в php.ini
где он также влияет на выполнение командной строки, то моментальные снимки, созданные из командной строки, также перестают работать.
Если я auto_prepend_file
параметр auto_prepend_file
, сгенерированный моментальный снимок профайлера может быть открыт без проблем в PhpStorm. Конечно, это не исправление, так как мне нужно, чтобы файл auto_prepend_file
выполнялся для моего приложения для правильной работы.