web-dev-qa-db-ja.com

PHP composer xdebug warning

PHPの新機能。 PHPプロジェクトで作業し、PHPアプリケーションをデバッグできるようにxdebugを有効にします。本番サーバーでは、xdebugは別のチームによって処理されるため有効になりません。 run composerそれは私に警告を与えます

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

開発中にxdebugを無効にしたくありません。開発環境でxdebugを実行すると、影響なし composer本番サーバーへのアプリのライブラリ/パフォーマンスのインストール)が必要になることを確認したかっただけです。

23
user275157

開発中にxdebugを無効にしたくありません。開発環境でxdebugを実行しても、composer本番サーバーへのアプリのライブラリ/パフォーマンスのインストールに影響がありません)を確認したかっただけです。

Xdebugをロードするだけで大​​きな影響があります。プロファイリング機能が有効になっていない場合でも、Composer実行速度が3倍または4倍遅くなります。

つまり、xdebugはデバッグには非常に貴重ですが、Composerの使用メモリと処理時間は増加します。


Composerの実行に対してXdebugを無効にする方法?

私の提案は、Composerを実行するための小さな呼び出しヘルパーを作成することです。

ヘルパーは、特にComposer用に設定されたカスタムphp.iniでPHPを呼び出すbashまたはバッチスクリプトです。それを呼び出してみましょう: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スクリプトのアイデアを複製するだけです。


また、Composer FAQで質問に対する完全な答えを見つけることができます。

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

それはほんの数時間前に追加/更新されました。


いくつかの選択肢(個別のiniファイルを使用する代わりに)も言及されています here

26
Jens A. Koch

Webスクリプトと同様に、CLIスクリプトの実行も遅くなることを期待してください。

追加のランタイムパフォーマンスが必要な場合は、CLIでのみXDebugを無効にできます。 PHPインストールを設定して、CLIとサーバーに異なるiniファイルを使用するように、 この回答が示唆するように。

5
Revenant

Composerの最新バージョンは、CLI SAPIに対してデフォルトでXDebugを有効にすることで回避できます。検出された場合に備えて、XDebug拡張を無効にして新しいPHPプロセスを生成します。

次の環境変数を設定することにより、この動作を無効にできます。

COMPOSER_ALLOW_XDEBUG=1

ドキュメントでこれを見つけました: https://getcomposer.org/doc/articles/troubleshooting.md#xdebug-impact-on-composer

3
ojrask

これを修正するには、PHP 7より前に、php.iniファイルから拡張機能をコメントアウトすることを提案します。ただし、PHP 7彼らはもうそこにいません。

代わりに、phpdismodコマンドを使用します。

Sudo phpdismod -s cli xdebug

-sフラグは、FPMではなくCLI SAPI(/etc/php/7.0/cli)のXdebugを無効にするように指示します。

そしてそのように、警告メッセージは消えるべきです。 PHPを再起動する必要はありません。

これに加えて、インストールプロセスを高速化するためにパッケージを並行してダウンロードする plugin があります。

2
iniravpatel

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フラグを使用すると、構成値を動的に設定できるため、拡張機能を含めることができます。

1
Dan Blows

php-composer.iniという名前のファイルを、次のコンテンツ(composerの最小の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:\ProgramData\ComposerSetup\bin\composer.phar" %*

このファイルをシステムパスまたはプロジェクトルートに追加します。 cmzの代わりにcomposerを使用すると、そのメッセージが表示されなくなり、うまくいけばcomposerの速度が上がるでしょう。

注:一部のパッケージには、特定のphp拡張機能が必要です。 php-compsoer.iniファイルに追加するか、--ignore-platform-reqsスイッチをcmz.batファイルに追加する必要があります

1
PHPst