PHP作曲家xdebug警告

时间:2015-11-25 06:09:42

标签: php composer-php xdebug

PHP新手。处理PHP项目并启用xdebug以便能够调试我的php应用程序。生产服务器未启用xdebug,因为它由另一个团队处理。在我的本地机器上,当我运行作曲家时,它会给我一个警告

You are running composer with xdebug enabled. This has a major impact on 
runtime performance.

我不想在开发时禁用xdebug。只是想确认在开发环境中运行xdebug对于在生产服务器上安装应用程序的库/性能的作曲家应该没有影响

6 个答案:

答案 0 :(得分:26)

  

我不想在开发时禁用xdebug。只是想确认在开发环境中运行xdebug对于在生产服务器上安装应用程序的库/性能的作曲家应该没有影响

加载Xdebug会产生巨大影响。即使没有启用性能分析功能,它也会使Composer的运行速度降低3倍或4倍。

换句话说:xdebug对于调试非常有用,但会增加使用的内存和Composer的处理时间。

如何禁用Xdebug for Composer运行?

我的建议是编写一个小的调用助手来运行Composer。

帮助程序是一个bash或批处理脚本,使用自定义php.ini调用PHP,特别是为Composer配置。让我们称之为:php.ini-composer

您可以复制当前的php.ini并为Composer运行调整它,方法是删除xdebug或将其注释掉,如下所示:;zend_extension = "/path/to/my/xdebug.so"

当你在场时:设置memory_limit=-1也很有帮助。

完整命令在Windows上看起来如此:php.exe -c php.ini-composer composer.phar %*

只需克隆bash脚本的想法。

您可以在Composer FAQ中找到问题的完整答案。

https://getcomposer.org/doc/articles/troubleshooting.md#xdebug-impact-on-composer

几小时前就已添加/更新。

还提到了一些替代方案(而不是使用单独的ini文件)here

答案 1 :(得分:5)

与Web脚本一样,期望CLI脚本也能运行得更慢。

如果您需要增加的运行时性能,则只能在CLI上禁用XDebug。设置PHP安装,使其为CLI和服务器使用不同的ini文件as this answer suggests.

答案 2 :(得分:2)

要解决此问题,在PHP 7之前,人们建议从php.ini文件中注释掉扩展名。 但是,在 PHP 7 中,它们不再存在。

相反,我们使用phpdismod命令。

sudo phpdismod -s cli xdebug

-s标志告诉它为CLI SAPI(/etc/php/7.0/cli)而不是FPM禁用Xdebug。

就这样,警告消息应该消失了。无需重新启动PHP。

除此之外,还有plugin可以并行下载软件包以加快安装过程。

答案 3 :(得分:1)

使用以下内容(作曲家的最小php配置)在某处创建名为php-composer.ini的文件:

extension_dir = "D:/php/ext/" ;according to your system
extension=php_openssl.dll
memory_limit=-1 ;optional

现在创建一个名为cmz.bat的文件,其中包含以下内容。 (相应地编辑路径)

@ECHO OFF
php -c "D:\php-composer.ini" "C:\ProgramData\ComposerSetup\bin\composer.phar" %*

将此文件添加到系统路径或项目根目录。 现在使用cmz代替composer,您将看不到该消息,并希望作曲家的速度会提高。

注意:某些软件包需要特定的php扩展。您需要将它们添加到php-compsoer.ini文件或附加--ignore-platform-reqs切换到cmz.bat文件

答案 4 :(得分:1)

在重新下载Symfony 3.1和PHP 7.0时,您可以运行以下命令(编辑它以包含composer.phar文件的路径):

php -n -d extension=json.so -d extension=phar.so -d extension=pdo.so -d extension=ctype.so /path/to/composer update

如果您的composer.json文件中有任何其他供应商,您可能会发现他们对扩展程序有依赖性,因此您需要通过将-d extension=name_of_extension.so添加到列表中来包含该扩展程序。

这里发生的是-n标志符合PHP默认值 - 它不加载任何ini PHP配置文件,因此从不加载XDebug。然后,每个-d标志允许您动态设置配置值,因此您可以包含扩展名。

答案 5 :(得分:1)

现代版本的Composer可以解决默认情况下为CLI SAPI启用XDebug的问题。它会生成一个新的PHP进程,并在检测到XDebug扩展时禁用它。

您可以通过设置以下环境变量来禁用此行为:

COMPOSER_ALLOW_XDEBUG=1

在文档中找到了这个:https://getcomposer.org/doc/articles/troubleshooting.md#xdebug-impact-on-composer