Composer in PhpStorm mit Docker Remote PHP Interpreter nutzen

PhpStorm erlaubt es bislang nicht, den PHP Dependency Manager Composer über einen “Remote PHP Interpreter” zu nutzen (https://youtrack.jetbrains.com/issue/WI-23544).

Das ist besonders dann bedauerlich, wenn man auf seinem Host-Rechner nicht die aktuellste PHP-Version installiert hat: Composer kann die Projektabhängigkeiten nicht installieren, wenn eines der zu installierenden Pakete Sprach-Features verwendet, welche der von Composer verwendete PHP-Interpreter nicht kennt.

Das Problem tritt in der Praxis u.a. dann auf, wenn man seine Anwendung in einem Docker-Container entwickelt und dennoch die Abhängigkeiten über PhpStorm installieren möchte statt dies auf der Kommandozeile im Docker-Container zu tun.

Meine Lösung ist, das Composer-Docker-Image mit dem folgenden Skript zu nutzen, das ich unter /usr/local/bin/composer-latest abgelegt habe:

tty=
tty -s && tty=--tty
docker run \
    $tty \
    --interactive \
    --rm \
    --user $(id -u):$(id -g) \
    --volume /etc/passwd:/etc/passwd:ro \
    --volume /etc/group:/etc/group:ro \
    --volume $(pwd):/app \
    composer "$@"

In den Einstellungen von PhpStorm kann dann unter Languages & Frameworks > PHP > Composer der Pfad zum Skript “/user/local/bin/composer-latest” als “composer executable” angegeben werden.

Das composer-Image kann ganz normal mit “docker pull composer” aktualisiert werden.

Diese einfache Lösung reicht, soweit keine besonderen PHP-Pakete benötigt werden.