SFTP-Deployment mit automatischem Upload bei Speichern in PhpStorm
AI generated
IDE
{ }
PhpStorm · SFTP · Deployment
SFTP-Deployment mit automatischem Upload bei Speichern in PhpStorm
Fuer Umgebungen ohne Docker und CI, mit Ausschluss-Regeln gegen versehentliche Live-Deployments

Nicht jedes Projekt laeuft in einem Docker-Setup mit CI-Pipeline. Wo nur ein klassischer FTP-Zugang existiert, kann PhpStorm jede gespeicherte Datei automatisch per SFTP hochladen, allerdings nur dann sicher, wenn Ausschluss-Regeln ein versehentliches Live-Deployment verhindern.

13 Min. Lesezeit SFTP Deployment PhpStorm Sicherheit

1. Wann SFTP-Deployment ueberhaupt noch sinnvoll ist

Fuer mironsoft.de gilt der Grundsatz, dass Live-Aenderungen ausschliesslich per FTP hochgeladen werden, weil kein automatisiertes Deployment ueber ein Docker-Setup oder eine CI-Pipeline existiert. Genau fuer diese Konstellation ist die SFTP-Deployment-Funktion von PhpStorm gebaut: kleinere Agentur-Projekte, Shared-Hosting-Umgebungen oder Legacy-Systeme, bei denen ein vollstaendiger Container- oder Pipeline-Aufbau wirtschaftlich nicht sinnvoll ist.

Wichtig ist dabei die Abgrenzung zum Hauptprojekt: Waehrend das eigentliche Mironsoft-Docker-Setup mit bin/magento und den zugehoerigen Wrapper-Skripten arbeitet, betrifft SFTP-Deployment typischerweise separate kleinere Projekte oder genau jene Faelle, in denen der lokale Teststand nicht automatisch mit dem Live-Stand uebereinstimmt und ein manueller, aber werkzeuggestuetzter Upload noetig bleibt.

2. Eine SFTP-Verbindung in PhpStorm einrichten

Unter Settings > Build, Execution, Deployment > Deployment laesst sich ueber das Plus-Symbol eine neue Serververbindung vom Typ SFTP anlegen. Neben Host, Port, Benutzername und Authentifizierungsmethode ist das Root-Path-Feld entscheidend: es legt fest, welches Verzeichnis auf dem Server als Basis fuer alle relativen Pfade dient, und sollte immer so eng wie moeglich auf das tatsaechliche Projektverzeichnis eingeschraenkt werden.

Auf dem Reiter Mappings wird anschliessend festgelegt, welcher lokale Ordner welchem entfernten Verzeichnis entspricht. Bei mehreren Umgebungen, etwa einem Staging- und einem Live-Zugang, empfiehlt es sich, fuer jede Umgebung eine eigene, klar benannte Serververbindung anzulegen, etwa 'Kunde-X Staging' und 'Kunde-X LIVE', statt eine einzelne Verbindung durch Umschalten der Zugangsdaten mehrfach zu verwenden.


Settings > Build, Execution, Deployment > Deployment
  + Neue Verbindung: SFTP
    Name: Kunde-X LIVE
    Host: ftp.kunde-x-hosting.de
    Port: 22
    Root path: /httpdocs

  Mappings-Tab:
    Local path: /home/mir/development/kunde-x
    Deploy path: /

3. Automatischen Upload bei jedem Speichern aktivieren

Der automatische Upload wird ueber Tools > Deployment > Automatic Upload (always) aktiviert. Ist diese Option gesetzt, laedt PhpStorm jede gespeicherte Datei sofort auf den konfigurierten Server hoch, ohne dass ein manueller Upload-Befehl noetig ist. Fuer schnelle Korrekturen an einer einzelnen CSS-Datei oder einem PHP-Template auf einem Shared-Hosting-System spart das gegenueber einem klassischen FTP-Client spuerbar Zeit, weil der Wechsel zu einem separaten Tool entfaellt.

Diese Bequemlichkeit ist zugleich der groesste Risikofaktor der gesamten Funktion: Ohne weitere Absicherung laedt PhpStorm jede Datei hoch, die im gemappten Ordner gespeichert wird, unabhaengig davon, ob es sich um eine bewusste Aenderung, eine versehentliche Testaenderung oder eine automatisch generierte Datei handelt. Genau deshalb ist automatischer Upload ohne begleitende Ausschluss-Regeln fuer produktive Umgebungen nicht empfehlenswert.

4. Die konkreten Risiken eines unkontrollierten Auto-Uploads

Das haeufigste Schadensmuster: Ein Entwickler oeffnet eine Datei zum Nachschauen, aendert versehentlich eine Zeile bei einem Testexperiment, speichert reflexartig mit Strg+S, und die fehlerhafte Version landet ohne weitere Bestaetigung sofort live. Bei aktivem Auto-Upload gibt es keinen Zwischenschritt, der diese Aktion abfaengt, anders als bei einem manuellen FTP-Upload, bei dem zumindest der bewusste Schritt des Hochladens eine gedankliche Kontrollinstanz darstellt.

Ein zweites, subtileres Risiko betrifft generierte oder temporaere Dateien. Wird ein IDE-Cache-Ordner, ein lokales .env mit abweichenden Zugangsdaten oder ein composer.lock aus einem lokalen Testlauf versehentlich mit hochgeladen, kann das den Live-Stand in einer Weise veraendern, die sich nicht sofort als Fehler zeigt, sondern erst spaeter zu inkonsistentem Verhalten fuehrt. Solche Dateien gehoeren grundsaetzlich auf eine Ausschlussliste, unabhaengig davon, ob Auto-Upload aktiv ist oder nicht.

5. Ausschluss-Regeln zur Absicherung konfigurieren

Ueber den Excluded-Paths-Bereich einer Deployment-Konfiguration lassen sich einzelne Ordner oder Dateimuster vom Upload ausschliessen. Sinnvolle Kandidaten sind Verzeichnisse wie .git, node_modules, var/log, generated und pub/static, sowie Konfigurationsdateien wie .env oder lokale Datenbank-Dumps, die niemals auf dem Live-Server landen sollten. Diese Liste sollte projektspezifisch gepflegt werden, nicht als generische Kopie eines anderen Projekts uebernommen werden.

Zusaetzlich zur Ausschlussliste unterstuetzt PhpStorm auch das explizite Markieren von Verzeichnissen als 'Excluded' direkt im Projektbaum, ueber das Kontextmenue unter Mark Directory As. Dateien in einem so markierten Ordner werden von der Indexierung und vom Deployment gleichermassen ausgenommen, was sich besonders fuer grosse, generierte Verzeichnisse eignet, die ohnehin nie manuell editiert werden sollten.


Deployment-Konfiguration > Excluded Paths:
  /.git
  /node_modules
  /var/log
  /var/cache
  /generated
  /pub/static
  /.env
  /*.sql

6. Staging- und Live-Verbindungen visuell unterscheidbar machen

Weil ein Verwechseln von Staging- und Live-Verbindung der wahrscheinlichste menschliche Fehler bei diesem Workflow ist, lohnt es sich, beide Serververbindungen bewusst unterschiedlich zu benennen und, falls das Deployment-Panel dies zulaesst, mit unterschiedlichen Farbmarkierungen zu versehen. Ein Name wie 'ACHTUNG LIVE Kunde-X' ist zwar unelegant, reduziert aber nachweislich die Zahl der Fehlklicks im Vergleich zu neutralen Namen wie 'Server 2'.

Zusaetzlich sollte automatischer Upload nur fuer die tatsaechlich als aktiv gesetzte Serververbindung greifen. Bevor an einem Live-Projekt gearbeitet wird, lohnt sich ein bewusster Blick auf Tools > Deployment, um zu bestaetigen, welche Verbindung als Default markiert ist, denn genau diese wird beim automatischen Upload verwendet, nicht zwingend die zuletzt genutzte.

7. Ein sichererer Zwischenweg: manueller Upload mit Vorschau

Statt des vollautomatischen Uploads bei jedem Speichern bietet PhpStorm mit Tools > Deployment > Upload to eine Variante, bei der der Upload bewusst pro Datei oder pro markiertem Verzeichnis ausgeloest wird. In Kombination mit der Funktion Sync with Deployed to laesst sich zudem ein Diff zwischen lokaler und entfernter Version anzeigen, bevor tatsaechlich hochgeladen wird, was fuer sensible Live-Umgebungen einen sinnvollen Mittelweg zwischen Komfort und Sicherheit darstellt.

Fuer Projekte, bei denen versehentliche Live-Aenderungen besonders teuer waeren, etwa waehrend verkaufsstarker Zeiten im Shop, ist es ratsam, automatischen Upload grundsaetzlich zu deaktivieren und stattdessen bewusst mit Upload to vor jedem Livegang zu arbeiten. Der Zeitverlust gegenueber dem automatischen Modus ist gering, der Sicherheitsgewinn dagegen erheblich.

8. Lokalen und entfernten Stand regelmaessig vergleichen

Da bei SFTP-Deployment keine Versionskontrolle auf dem Server existiert, kann der Live-Stand mit der Zeit vom lokalen Stand abweichen, etwa wenn ein Kollege direkt per klassischem FTP-Client Aenderungen vorgenommen hat, ohne PhpStorm zu nutzen. Ueber Tools > Deployment > Browse Remote Host laesst sich der Serverinhalt direkt im Projektbaum-Stil einsehen und mit dem lokalen Stand vergleichen.

Ein regelmaessiger Abgleich, insbesondere vor groesseren Aenderungen, verhindert, dass ein automatischer Upload versehentlich Aenderungen ueberschreibt, die ausserhalb von PhpStorm direkt auf dem Server vorgenommen wurden. Diese Kontrolle ersetzt keine echte Versionskontrolle, reduziert aber das Risiko widerspruechlicher Stände erheblich.

9. Praxis-Checkliste vor der Aktivierung von Auto-Upload

Vor der ersten Aktivierung von Automatic Upload (always) auf einer neuen Verbindung lohnt sich folgende Reihenfolge: Root-Path und Mappings pruefen, Ausschlussliste fuer .git, node_modules, .env und generierte Verzeichnisse befuellen, Serververbindung eindeutig als Staging oder Live benennen, und einen ersten Testupload mit einer unkritischen Datei durchfuehren, um die Mapping-Korrektheit zu bestaetigen, bevor produktiver Code betroffen ist.

Diese Checkliste dauert bei einem neuen Projekt selten laenger als zehn Minuten, verhindert aber genau die Fehler, die bei SFTP-Deployment am teuersten sind: ein versehentliches Ueberschreiben von Live-Dateien durch eine falsch gemappte oder ungeschuetzte Verbindung.

Absicherung Wo konfiguriert Schuetzt vor Empfehlung
Excluded Paths Deployment-Konfiguration Upload von .git, .env, generierten Dateien Immer projektspezifisch pflegen
Eindeutige Verbindungsnamen Serververbindung anlegen Verwechslung von Staging und Live Klar unterscheidbare Namen wie LIVE/Staging
Manueller Upload to Tools > Deployment Versehentlichen Auto-Upload bei sensiblen Projekten Fuer Live-Umgebungen statt Auto-Upload nutzen
Remote-Abgleich Browse Remote Host Widerspruechliche Staende zwischen lokal und Server Vor groesseren Aenderungen pruefen

Mironsoft

PhpStorm-Setup, Docker-Integration und Team-Produktivität

PhpStorm, das für Magento- und PHP-Projekte wirklich optimal läuft?

Wir prüfen bestehende PhpStorm-Setups auf langsame Indizierung, ungenutzte Docker-Integration und fehlende Team-Konventionen und richten eine Konfiguration ein, die von der ersten Sekunde an produktiv ist.

Setup-Review

Indexing, Interpreter und Speicher-Einstellungen für große Magento-Projekte optimieren.

Docker-Integration

Xdebug, PHPUnit und Datenbank-Tools sauber mit dem Docker-Setup verbinden.

Team-Konventionen

Inspection-Profile, Code-Style und Live-Templates projektweit vereinheitlichen.

10. Zusammenfassung

SFTP-Auto-Upload in PhpStorm: Das Wichtigste auf einen Blick

Einsatzfall

SFTP-Deployment fuer Projekte ohne Docker oder CI, etwa kleinere Agentur-Projekte

Komfort

Automatic Upload (always) laedt jede gespeicherte Datei sofort auf den Server

Hauptrisiko

Versehentliche Testaenderungen landen ohne Zwischenschritt sofort live

Absicherung

Ausschluss-Regeln, eindeutige Verbindungsnamen und manueller Upload fuer sensible Umgebungen

11. FAQ: SFTP-Auto-Upload in PhpStorm: Das Wichtigste auf einen Blick

1Wo richte ich eine SFTP-Verbindung in PhpStorm ein?
Unter Settings > Build, Execution, Deployment > Deployment ueber das Plus-Symbol eine neue Verbindung vom Typ SFTP anlegen.
2Wie aktiviere ich automatischen Upload bei jedem Speichern?
Ueber Tools > Deployment > Automatic Upload (always), danach laedt PhpStorm jede gespeicherte Datei sofort auf den konfigurierten Server hoch.
3Was ist das groesste Risiko bei automatischem Upload?
Eine versehentliche Testaenderung wird ohne Zwischenschritt sofort live hochgeladen, da Auto-Upload keine Bestaetigung verlangt.
4Welche Ordner sollten grundsaetzlich vom Upload ausgeschlossen werden?
Unter anderem .git, node_modules, var/log, generated, pub/static und .env, konfigurierbar ueber Excluded Paths in der Deployment-Konfiguration.
5Wie verhindere ich eine Verwechslung von Staging- und Live-Verbindung?
Eindeutige, gut unterscheidbare Namen wie 'ACHTUNG LIVE Kunde-X' statt neutraler Bezeichnungen wie 'Server 2' vergeben.
6Gibt es eine sicherere Alternative zum vollautomatischen Upload?
Ja, Tools > Deployment > Upload to loest den Upload gezielt pro Datei oder Verzeichnis aus, kombiniert mit Sync with Deployed to fuer eine Diff-Vorschau.
7Wie erkenne ich, ob der Live-Stand vom lokalen Stand abweicht?
Ueber Tools > Deployment > Browse Remote Host laesst sich der Serverinhalt direkt einsehen und mit dem lokalen Stand vergleichen.
8Sollte ich Auto-Upload waehrend verkaufsstarker Zeiten aktiv lassen?
Nein, in dieser Zeit ist manueller Upload mit bewusster Vorschau die sicherere Wahl, da versehentliche Aenderungen besonders teuer waeren.
9Ersetzt SFTP-Deployment eine Versionskontrolle?
Nein, es gibt keine Historie auf dem Server, ein regelmaessiger Remote-Abgleich reduziert das Risiko widerspruechlicher Staende, ersetzt aber kein echtes Versionskontrollsystem.
10Ist SFTP-Deployment fuer das Mironsoft-Hauptprojekt relevant?
Nur eingeschraenkt, da fuer mironsoft.de manuelles FTP ohne Docker-Anbindung gilt, waehrend das Docker-Setup mit bin/magento fuer die lokale Entwicklung genutzt wird.