【问题标题】:Loading xdebug via -z argument通过 -z 参数加载 xdebug
【发布时间】:2016-02-01 04:04:56
【问题描述】:

根据 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 功能。

我没有读到任何提到这不起作用的东西,但它不起作用。虽然无法通过 -z 加载 xdebug 并不能完全阻止我编写脚本来切换 php.ini 文件中的 zend_extension 行,但这并不完全方便。

谁能解释这是为什么?

【问题讨论】:

    标签: php xdebug command-line-interface


    【解决方案1】:

    我无法解释为什么它不能与 -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 是您的脚本名称。

    【讨论】:

    • 是的! -dzend_extension=... 似乎有效。谢谢!我想知道这是否是-z 的参数处理中的错误?
    猜你喜欢
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    相关资源
    最近更新 更多