Загрузка xdebug через аргумент -z

Согласно man-странице PHP, существуют следующие параметры командной строки:

  --zend-extension file
-z file        Load Zend extension file

Это, вероятно, означает, что вы можете загружать xdebug как расширение Zend таким образом, загружая Xdebug только тогда, когда вам это действительно нужно, что в моем случае полезно, поскольку xdebug может серьезно замедлить модульные тесты Drupal, но мне может понадобиться отладить некоторые тесты.

Однако загрузка Xdebug таким образом, похоже, не работает.

Среда: MacOS 10.10, PHP 5.6.3-dev, Xdebug 2.2.5.

$> ls -l /usr/local/lib/php/extensions/debug-non-zts-20131226/xdebug.so
-rwxr-xr-x  1 root  wheel  319276 Oct 24 13:45 /usr/local/lib/php/extensions/debug-non-zts-20131226/xdebug.so
$> grep xdebug /usr/local/etc/php/5.6/php.ini
zend_extension=/usr/local/lib/php/extensions/debug-non-zts-20131226/xdebug.so
$> php -v |grep -i xdebug
with Xdebug v2.2.5, Copyright (c) 2002-2014, by Derick Rethans

Так ясно, когда указано в php.ini файл, xdebug загружается правильно. Когда я закомментирую строку xdebug,

> grep xdebug /usr/local/etc/php/5.6/php.ini
;zend_extension=/usr/local/lib/php/extensions/debug-non-zts-20131226/xdebug.so

Вы можете видеть, что он правильно не загружен:

> php -i|grep -i xdebug
>

Тем не менее, когда я пытаюсь использовать -z для загрузки расширения,

> php -z /usr/local/lib/php/extensions/debug-non-zts-20131226/xdebug.so -i|grep -i xdebug
>

И никакая функциональность Xdebug не включена.

Я не читал ничего, что упоминает, что это не работает, но это не так. Не удается загрузить xdebug через -z, но это не мешает мне написать скрипт для переключения zend_extension строка в файле php.ini, это не совсем удобно.

Кто-нибудь может объяснить, почему это так?

3

Решение

У меня нет объяснения, почему он не работает с -z аргумент, но попробуйте:

php -dzend_extension=/usr/local/lib/php/extensions/debug-non-zts-20131226/xdebug.so -f myscript.php

Затем вы можете создать ярлык для профилирования сценариев PHP на лету. Рассмотрим этот скрипт bash:

#!/bin/bash

php -dzend_extension=/path/to/xdebug.so -dxdebug.profiler_enable=1 -dxdebug.profiler_output_dir=$(pwd) $@

Затем вы можете профилировать сценарий с помощью ./xdebug -f script.phpпредполагая xdebug это имя вашего сценария.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]