根据 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
行,但这并不十分方便。
谁能解释这是为什么?
最佳答案
我无法解释为什么它不适用于 -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
是您的脚本的名称。
关于php - 通过 -z 参数加载 xdebug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26856947/