PHP 作曲家 xdebug 警告



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

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

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

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

仅加载 Xdebug 就有巨大的影响。即使未启用性能分析功能,它也会使 Composer 运行速度减慢 3 倍或 4 倍。

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


如何为作曲家运行禁用 Xdebug?

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

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

您可以复制当前php.ini并通过删除 xdebug 或将其注释掉来针对 Composer 运行进行调整,如下所示:;zend_extension = "/path/to/my/xdebug.so" .

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

完整的命令在Windows上如下所示:php.exe -c php.ini-composer composer.phar %*

只需克隆 bash 脚本的想法。


您可以在作曲家常见问题中找到您问题的完整答案。

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

它是几个小时前添加/更新的。


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

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

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

COMPOSER_ALLOW_XDEBUG=1

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

与 Web 脚本一样,预计 CLI 脚本也会运行得更慢。

如果需要增加运行时性能,只能在 CLI 上禁用 XDebug。设置您的 PHP 安装,以便它为 CLI 和您的服务器使用不同的 ini 文件,正如这个答案所暗示的那样。

为了解决这个问题,在 PHP 7 之前,人们会建议从你的 php.ini 文件中注释掉扩展名。但是,在 PHP 7 中,它们不再存在。

相反,我们使用 phpdismod 命令。

sudo phpdismod -s cli xdebug

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

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

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

在某处创建一个名为 php-composer.ini 的文件,其中包含以下内容(作曲家的最低 php 配置(:

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:ProgramDataComposerSetupbincomposer.phar" %*

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

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

在全新下载的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标志都允许您动态设置配置值,以便您可以包含扩展。

相关内容

  • 没有找到相关文章

最新更新