Zum Inhalt springen

~/CodeBlog.at

PHP unter macOS installieren und Version wechseln

·3 Min. Lesezeit

Veröffentlicht
Überarbeitet

Was ist neu: Komplett neu: macOS hat kein PHP mehr, SIP muss nicht deaktiviert werden. Jetzt mit DDEV/Docker, Homebrew-Installation und Versionswechsel.

Kurz & knapp

macOS enthält seit Version 12 kein PHP mehr – und für Webprojekte brauchst du es lokal meist gar nicht: DDEV bzw. Docker bringen pro Projekt die passende PHP-Version mit (ddev composer install, ddev exec php -v). Für reine CLI-Tools installierst du PHP mit brew install php, ältere Versionen über php@8.4 & Co.

Getestet mit: macOS 27, Homebrew PHP 8.5, DDEV 1.25

Inhalt
  1. Brauchst du PHP lokal überhaupt noch?
  2. DDEV: PHP pro Projekt
  3. Docker: PHP für einzelne Befehle
  4. PHP mit Homebrew installieren
  5. Zwischen PHP-Versionen wechseln
  6. PHP-FPM als Dienst

Als dieser Artikel 2015 entstand, sah lokale PHP-Entwicklung auf dem Mac meist so aus: Webprojekte liefen über MAMP, aber für das Terminal – Composer, Skripte, Build-Tools – brauchte man zusätzlich ein aktuelles PHP auf der Kommandozeile. Weil macOS damals ein veraltetes PHP unter /usr/bin/php mitlieferte, wurde dieses ersetzt – inklusive Abschalten der System Integrity Protection.

Das ist heute nicht mehr nötig und auch nicht mehr möglich:

Brauchst du PHP lokal überhaupt noch?

Für Webprojekte lautet die Antwort heute meistens: nein. Mit DDEV (öffnet in neuem Tab) oder Docker läuft PHP in einem Container – in genau der Version, die das Projekt braucht. Jedes Projekt hat seine eigene Umgebung, und alle im Team arbeiten mit identischen Versionen.

DDEV: PHP pro Projekt

Die PHP-Version legst du bei DDEV pro Projekt fest:

ddev config --php-version=8.4
ddev restart

Sie steht danach in .ddev/config.yaml (php_version: "8.4") und wird mit dem Projekt versioniert. Alle PHP- und Composer-Befehle führst du über DDEV im Container aus:

ddev composer install      # Composer im Container
ddev exec php -v           # beliebiger PHP-Befehl im Container
ddev ssh                   # Shell im Container öffnen

Damit gibt es keine Konflikte zwischen Projekten mehr, die unterschiedliche PHP-Versionen brauchen.

Docker: PHP für einzelne Befehle

Ohne DDEV kannst du mit dem offiziellen PHP-Image (öffnet in neuem Tab) einzelne Befehle ausführen, ohne PHP zu installieren:

docker run --rm -v "$PWD":/app -w /app php:8.4-cli php script.php

PHP mit Homebrew installieren

Ein lokales PHP ist trotzdem praktisch – etwa für eigenständige CLI-Tools, Skripte außerhalb eines Projekts oder Editor-Integrationen. Am einfachsten geht das mit Homebrew:

  1. PHP installieren (aktuelle Version, derzeit PHP 8.5):

    brew install php
  2. Prüfen:

    which php    # /opt/homebrew/bin/php
    php -v
  3. Optional Composer installieren:

    brew install composer

Die Konfiguration findest du mit php --ini – bei Homebrew liegt die php.ini unter /opt/homebrew/etc/php/<version>/.

Zwischen PHP-Versionen wechseln

Neben der aktuellen Version bietet Homebrew alle noch unterstützten Versionen als eigene Pakete an:

PHP-Version Homebrew-Paket Sicherheitsupdates bis
PHP 8.5 php 31.12.2029
PHP 8.4 php@8.4 31.12.2028
PHP 8.3 php@8.3 31.12.2027
PHP 8.2 php@8.2 31.12.2026

Versionen ohne Support entfernt Homebrew nach und nach – php@8.1 ist bereits als veraltet markiert und wird Ende 2026 deaktiviert.

Die versionierten Pakete werden nicht automatisch verlinkt („keg-only“). So stellst du auf eine andere Version um:

brew install php@8.4
brew unlink php
brew link --overwrite --force php@8.4
php -v

Zurück zur aktuellen Version:

brew unlink php@8.4
brew link php

PHP-FPM als Dienst

Brauchst du PHP-FPM, etwa zusammen mit einem lokal installierten nginx oder Apache, startest du es über Homebrew als Hintergrunddienst:

brew services start php

Häufige Fragen

Ist PHP auf dem Mac vorinstalliert?

Nein, nicht mehr. Apple hat PHP mit macOS 12 Monterey entfernt. /usr/bin/php gibt es auf aktuellen Macs nicht mehr.

Muss ich für ein PHP-Update die System Integrity Protection deaktivieren?

Nein. Das war nur nötig, als man das mitgelieferte /usr/bin/php ersetzen wollte. PHP aus Homebrew liegt unter /opt/homebrew und braucht keine Änderungen am System.

Brauche ich PHP lokal, wenn ich mit DDEV arbeite?

In der Regel nicht. DDEV führt PHP und Composer im Container aus, z. B. mit ddev composer install oder ddev exec php -v. Die PHP-Version legst du pro Projekt in .ddev/config.yaml fest.

Wie wechsle ich mit Homebrew die PHP-Version?

Gewünschte Version installieren, z. B. brew install php@8.4, dann brew unlink php und brew link --overwrite --force php@8.4 ausführen und mit php -v prüfen.

Quellen & weiterführende Links

  1. Supported Versions (öffnet in neuem Tab) – php.net
  2. php – Homebrew Formula (öffnet in neuem Tab) – formulae.brew.sh
  3. DDEV – Docker-based local PHP development (öffnet in neuem Tab) – ddev.com
  4. DDEV Commands (öffnet in neuem Tab) – DDEV Dokumentation
  5. DDEV Config Options (php_version) (öffnet in neuem Tab) – DDEV Dokumentation
  6. php – Official Image (öffnet in neuem Tab) – Docker Hub
  7. macOS 12.0 – where oh where is PHP? (öffnet in neuem Tab) – Apple Developer Forums
  8. shivammathur/homebrew-php (ältere PHP-Versionen) (öffnet in neuem Tab) – GitHub

Geschrieben von

Christoph Schwob (öffnet in neuem Tab)

Ich bin Christoph Schwob, halbkreativer Entwickler aus Österreich und arbeite seit über 10 Jahren an und mit TYPO3. Hier sammle ich Lösungen, Code-Snippets und Notizen rund um TYPO3, macOS, Server, Homelab und alles andere.

Suche

Tippe einen Suchbegriff ein.