PHP新手。处理PHP项目并启用xdebug以便能够调试我的php应用程序。生产服务器未启用xdebug,因为它由另一个团队处理。在我的本地机器上,当我运行作曲家时,它会给我一个警告
You are running composer with xdebug enabled. This has a major impact on
runtime performance.
我不想在开发时禁用xdebug。只是想确认在开发环境中运行xdebug对于在生产服务器上安装应用程序的库/性能的作曲家应该没有影响。
答案 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