PhpStorm:"Run with coverage" 结果 "Cannot load Xdebug - extension already loaded"
PhpStorm: "Run with coverage" results in "Cannot load Xdebug - extension already loaded"
我刚刚将我的 PhpStorm 项目从 PHPUnit 4.x 升级到 PHPUnit 5.x。 运行 我的单元测试工作正常。
为了使 "run with coverage" 正常工作,我必须编辑 Run/Debug 配置并将 --whitelist=/path/to/whitelisted/dir
添加到测试运行程序选项。现在,当我选择 "Run with coverage," 时会生成覆盖范围,但我收到此 Xdebug 警告。
Testing started at 12:06 PM ...
/usr/local/opt/php56/bin/php -dzend_extension=/usr/local/opt/php56-
xdebug/xdebug.so -dxdebug.coverage_enable=1
/Users/bwood/code/php/WpsConsole/vendor/phpunit/phpunit/phpunit --
whitelist=/Users/bwood/code/php/WpsConsole/src --coverage-clover /Users/bwood/Library/Caches/PhpStorm2017.3/coverage/WpsConsole$NEW.coverage --no-configuration /Users/bwood/code/php/WpsConsole/tests/UnitTests --teamcity
Cannot load Xdebug - extension already loaded
PHPUnit 5.7.27 by Sebastian Bergmann and contributors.
我认为问题是 php 被调用
-dzend_extension=/usr/local/opt/php56-xdebug/xdebug.so
但我不知道在哪里可以删除该选项。我正在测试控制台应用程序,因此没有网络服务器配置。
检查您在 PhpStorm 中的 PHP Interpreter
-- xdebug 扩展有一个单独的字段。它允许您不在实际 php.ini 中加载 xdebug(因此普通脚本执行会更快)并且仅在需要时加载 xdebug (debug/coverage).
根据您目前的信息,您在 php.ini 那里找到了它。 建议的解决方案是将其从该字段中删除。
P.S。显然,它仅适用于 CLI,并且不会以任何方式影响基于浏览器的调试(因为它是运行 PHP 的 Web 服务器,所以 IDE 无法在那里传递此类参数)。
我有两个不同的问题导致了同样的情况。 (我的说已经加载了两次)。
首先是上面PHPStorm中的调试器扩展字段。我修好了,但仍然有问题。
那么我运行:
>php --ini
Cannot load Xdebug - it was already loaded
Configuration File (php.ini) Path: /usr/local/etc/php/7.2
Loaded Configuration File: /usr/local/etc/php/7.2/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.2/conf.d
Additional .ini files parsed: /usr/local/etc/php/7.2/conf.d/ext-opcache.ini
因为所有这些文件都在同一个基本目录中,所以我去了 /usr/local/etc/php
$:/usr/local/etc/$ grep -r 'xdebug' .
./php/7.2/php.ini:zend_extension="xdebug.so"
./php/7.2/php.ini:zend_extension="xdebug.so"
这表明问题出在我的 php.ini 文件中。出于某种原因,我把它放在 php.ini 文件的顶部。
zend_extension="xdebug.so"
zend_extension="xdebug.so"
[PHP]
我删除了其中一行,警告消失了!
我刚刚将我的 PhpStorm 项目从 PHPUnit 4.x 升级到 PHPUnit 5.x。 运行 我的单元测试工作正常。
为了使 "run with coverage" 正常工作,我必须编辑 Run/Debug 配置并将 --whitelist=/path/to/whitelisted/dir
添加到测试运行程序选项。现在,当我选择 "Run with coverage," 时会生成覆盖范围,但我收到此 Xdebug 警告。
Testing started at 12:06 PM ...
/usr/local/opt/php56/bin/php -dzend_extension=/usr/local/opt/php56-
xdebug/xdebug.so -dxdebug.coverage_enable=1
/Users/bwood/code/php/WpsConsole/vendor/phpunit/phpunit/phpunit --
whitelist=/Users/bwood/code/php/WpsConsole/src --coverage-clover /Users/bwood/Library/Caches/PhpStorm2017.3/coverage/WpsConsole$NEW.coverage --no-configuration /Users/bwood/code/php/WpsConsole/tests/UnitTests --teamcity
Cannot load Xdebug - extension already loaded
PHPUnit 5.7.27 by Sebastian Bergmann and contributors.
我认为问题是 php 被调用
-dzend_extension=/usr/local/opt/php56-xdebug/xdebug.so
但我不知道在哪里可以删除该选项。我正在测试控制台应用程序,因此没有网络服务器配置。
检查您在 PhpStorm 中的 PHP Interpreter
-- xdebug 扩展有一个单独的字段。它允许您不在实际 php.ini 中加载 xdebug(因此普通脚本执行会更快)并且仅在需要时加载 xdebug (debug/coverage).
根据您目前的信息,您在 php.ini 那里找到了它。 建议的解决方案是将其从该字段中删除。
P.S。显然,它仅适用于 CLI,并且不会以任何方式影响基于浏览器的调试(因为它是运行 PHP 的 Web 服务器,所以 IDE 无法在那里传递此类参数)。
我有两个不同的问题导致了同样的情况。 (我的说已经加载了两次)。
首先是上面PHPStorm中的调试器扩展字段。我修好了,但仍然有问题。
那么我运行:
>php --ini
Cannot load Xdebug - it was already loaded
Configuration File (php.ini) Path: /usr/local/etc/php/7.2
Loaded Configuration File: /usr/local/etc/php/7.2/php.ini
Scan for additional .ini files in: /usr/local/etc/php/7.2/conf.d
Additional .ini files parsed: /usr/local/etc/php/7.2/conf.d/ext-opcache.ini
因为所有这些文件都在同一个基本目录中,所以我去了 /usr/local/etc/php
$:/usr/local/etc/$ grep -r 'xdebug' .
./php/7.2/php.ini:zend_extension="xdebug.so"
./php/7.2/php.ini:zend_extension="xdebug.so"
这表明问题出在我的 php.ini 文件中。出于某种原因,我把它放在 php.ini 文件的顶部。
zend_extension="xdebug.so"
zend_extension="xdebug.so"
[PHP]
我删除了其中一行,警告消失了!