Disabling xdebug when running composer

greg0ire picture greg0ire · Jun 27, 2015 · Viewed 80.3k times · Source

When running composer diagnose, I get the following error :

The xdebug extension is loaded, this can slow down Composer a little. Disabling it when using Composer is recommended.

How can I disable xdebug only when I'm running Composer?

Answer

Joyce Babu picture Joyce Babu · Apr 19, 2016

Update : The issue has been fixed in Composer 1.3. Update composer to the latest version by executing composer self-update, instead of trying the following workaround.


Here is my modification of @ezzatron's code. I have updated the script to detect ini files from phpinfo output.

#!/bin/sh

php_no_xdebug () {
    temporaryPath="$(mktemp -t php.XXXX).ini"

    # Using awk to ensure that files ending without newlines do not lead to configuration error
    php -i | grep "\.ini" | grep -o -e '\(/[a-z0-9._-]\+\)\+\.ini' | grep -v xdebug | xargs awk 'FNR==1{print ""}1' | grep -v xdebug > "$temporaryPath"

    php -n -c "$temporaryPath" "$@"
    rm -f "$temporaryPath"
}

php_no_xdebug /usr/local/bin/composer.phar $@
# On MacOS with composer installed using brew, comment previous line
# Install jq by executing `brew install jq` and uncomment following line.
# php_no_xdebug /usr/local/Cellar/composer/`brew info --json=v1 composer | jq -r '.[0].installed[0].version'`/libexec/composer.phar $@