Geschrieben von Chris Schön am Apr 14, 2026
Vor gut einem Jahr haben wir hier im Blog noch drupal/media_placeholder empfohlen. Tja – so schnell vergeht die Zeit. Das Modul wird nicht mehr aktiv entwickelt. Wer es noch im Einsatz hat, lebt auf geborgter Zeit. Hier kommt die deutlich bessere Alternative.
Jeder Drupal-Entwickler kennt das Szenario: Du klonst ein Projekt, importierst die Datenbank, rufst die Seite auf – und starrst auf kaputte Bildplatzhalter. Überall. Die Medien-Dateien fehlen, weil du natürlich nicht den kompletten sites/default/files-Ordner mit seinen 8 GB mitgezogen hast.
Die klassischen Lösungsansätze waren bisher:
Das Grundproblem bleibt: Du brauchst die Dateien vom Live-System in deiner lokalen Umgebung. Aber du willst weder Gigabytes synchronisieren noch auf Module setzen, die morgen vielleicht nicht mehr mit dem nächsten Drupal-Core-Update kompatibel sind.
drupal/media_placeholder hat seinen Job gemacht, keine Frage. Aber ein Modul ohne aktive Wartung in einem Projekt zu behalten, ist ein Risiko – besonders wenn es eine Lösung gibt, die nicht nur aktiv gepflegt wird, sondern das Problem grundlegend besser löst.
Stage File Proxy ist ein Drupal-Modul, das einen radikal einfachen Ansatz verfolgt: Wenn deine lokale oder Staging-Umgebung eine Datei braucht, die nicht vorhanden ist, holt sie sich das Modul automatisch vom Live-System. On-the-fly. Transparent. Ohne dass du irgendetwas tun musst.
Konkret passiert Folgendes: Ein Besucher (oder du als Entwickler) ruft eine Seite auf, die ein Bild referenziert. Drupal stellt fest, dass die Datei lokal nicht existiert. Stage File Proxy fängt diesen Request ab, lädt die Datei vom konfigurierten Origin-Server herunter, speichert sie lokal – und liefert sie aus. Beim nächsten Aufruf ist die Datei schon da.
Das Modul existiert seit über einem Jahrzehnt, wird aktiv gepflegt und hat über 40.000 gemeldete Installationen. Es ist kein Experiment – es ist ein bewährtes Werkzeug, das in professionellen Drupal-Workflows längst zum Standard gehört.
Der Unterschied zwischen einem Platzhalter-Modul und Stage File Proxy ist fundamental:
Die Installation ist so simpel, dass es fast schon langweilig ist:
composer require drupal/stage_file_proxy
drush en stage_file_proxy
drush config:set stage_file_proxy.settings origin "https://www.meine-live-seite.de"
Das war’s. Ernsthaft. Ab sofort zieht sich deine lokale Umgebung fehlende Dateien automatisch vom Live-System.
Stage File Proxy bietet noch ein paar nützliche Einstellungen, die du über drush config:set oder die settings.php setzen kannst:
// In settings.php (empfohlen für lokale Umgebungen)
$config['stage_file_proxy.settings']['origin'] = 'https://www.meine-live-seite.de';
$config['stage_file_proxy.settings']['hotlink'] = FALSE;
$config['stage_file_proxy.settings']['origin_dir'] = 'sites/default/files';
Die Option hotlink ist interessant: Wenn du sie auf TRUE setzt, werden die Dateien nicht heruntergeladen, sondern direkt vom Live-Server eingebunden. Spart Speicher, braucht aber eine permanente Verbindung. Für die meisten Fälle ist FALSE (der Default) die bessere Wahl.
Hier wird es richtig elegant. Stage File Proxy gehört nur in deine Entwicklungs- und Staging-Umgebung – niemals auf Live. Und genau dafür gibt es Config Split.
Falls du Config Split noch nicht nutzt: Es erlaubt dir, Drupal-Konfigurationen umgebungsabhängig zu verwalten. Ein Config Split für die Dev-Umgebung könnte so aussehen:
drush config:set config_split.config_split.dev status TRUE
Füge stage_file_proxy zum Dev-Split hinzu. In der Config Split-Konfiguration unter /admin/config/development/configuration/config-split legst du fest, dass das Modul stage_file_proxy und seine Config stage_file_proxy.settings nur im Dev-Split aktiv sind.
In deiner lokalen settings.php aktivierst du den Split:
// settings.local.php
$config['config_split.config_split.dev']['status'] = TRUE;
Das Ergebnis: Du machst drush cr, und je nach Umgebung ist Stage File Proxy an oder aus. Kein manuelles Aktivieren, kein Vergessen, kein Risiko auf Live.
Nach einiger Zeit im produktiven Einsatz gibt es ein paar Dinge, die man wissen sollte:
Falls dein Live-System hinter einem HTTP-Basic-Auth steht (Staging-Umgebung als Origin), kannst du die Credentials mitgeben:
$config['stage_file_proxy.settings']['origin'] = 'https://user:passwort@staging.meine-seite.de';
Stelle sicher, dass sites/default/files in deiner .gitignore steht. Die heruntergeladenen Dateien gehören nicht ins Repository.
Stage File Proxy ist nicht für jedes Szenario die Antwort. Hier ein ehrlicher Überblick:
Stage File Proxy ist ideal wenn:
Weniger geeignet ist es wenn:
Andere Ansätze:
Wenn du aktuell noch drupal/media_placeholder im Einsatz hast, ist die Migration unkompliziert:
drush pm:uninstall media_placeholder
composer remove drupal/media_placeholder
composer require drupal/stage_file_proxy
drush en stage_file_proxy
drush config:set stage_file_proxy.settings origin "https://www.meine-live-seite.de"
Fünf Befehle, und du bist von einem toten Modul auf eine aktiv gepflegte, bessere Lösung umgestiegen. Kein Datenverlust, kein Risiko – die Platzhalter werden einfach durch echte Dateien ersetzt.
Stage File Proxy gehört in jedes Drupal-Projekt, das mit echten Inhalten arbeitet. Drei Befehle Setup, null Wartungsaufwand, und das Problem mit fehlenden Dateien in der Entwicklungsumgebung ist ein für alle Mal gelöst. Kombiniert mit Config Split hast du einen sauberen, automatisierten Workflow, der einfach funktioniert – ohne dass du je wieder darüber nachdenken musst.