Table of Contents
- Projektstruktur
- 1. Ordnerstruktur im Gitea-Repository
- 1.1 Erklärung aller Ordner
- public/
- app/
- app/Controllers/
- app/Services/
- Ldap/
- Powershell/
- Snmp/
- app/Models/
- app/Helpers/
- config/
- config.php
- scripts/
- scripts/powershell/
- storage/
- docs/
- README.md
- .gitignore im Repository-Root
- 1.2 Namespaces in diesem Projekt
- 2. Struktur auf dem IIS-Server
- 3. Warum diese Struktur gut für das Projekt ist
- 4. Zusammenfassung
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Projektstruktur
Hinweis: Dies ist lediglich ein Vorschlag meinerseits, um eine klare, sichere und nachvollziehbare Struktur für unser PHP-/AD-Projekt zu gewährleisten.
Dieses Dokument beschreibt die empfohlene Ordnerstruktur für das Gitea-Repository und für den späteren IIS-Server, sodass jedes Teammitglied genau versteht, was wohin gehört und warum.
1. Ordnerstruktur im Gitea-Repository
PHP_AdminTool_Projekt\
├── public\
│ ├── index.php
│ ├── css\
│ ├── js\
│ ├── images\
│ ├── views\
│ └── assets\
├── app\
│ ├── Controllers\
│ ├── Services\
│ │ ├── Ldap\
│ │ ├── Powershell\
│ │ └── Snmp\
│ ├── Models\
│ └── Helpers\
├── config\
│ ├── config.example.php
│ └── config.php
├── scripts\
│ └── powershell\
├── storage\
│ ├── logs\
│ └── uploads\
├── docs\
│ ├── Architektur.md
│ ├── Deployment.md
│ └── API-Endpunkte.md
├── .gitignore
└── README.md
Hinweis: Die oben dargestellte Struktur ist das Zielbild.
Im aktuellen Stand des Repositories sind einige Ordner (z. B. Models, Helpers, docs) noch nicht vollständig belegt.
1.1 Erklärung aller Ordner
public/
Dies ist das Webroot – der einzige Ordner, der direkt über den Browser erreichbar ist.
Hier gehört hinein:
index.phpals Einstiegspunkt- CSS-Dateien
- JavaScript-Dateien
- Bilder
- PHP und HTML Dateien zur Anzeige
- Frontend-Assets
Warum:
Sicherheit. Alles, was sensibel ist (Config, PowerShell, Logs), liegt außerhalb des Webroots.
app/
Hier liegt die komplette PHP-Anwendungslogik.
app/Controllers/
- Verarbeiten Requests aus dem Frontend
- Rufen passende Services auf
- Geben Views oder JSON zurück
Beispiel: UserController.php zeigt Benutzerliste an oder verarbeitet Formulare.
app/Services/
Hier steckt die "Fachlogik" des Projekts.
- keine HTML-Ausgabe
- alles, was LDAP, SNMP, PowerShell oder CSV betrifft
Unterordner:
Ldap/
- LDAP-Verbindungen
- User anlegen/ändern/löschen
- Passwörter setzen
- Gruppen verwalten
Powershell/
- PHP-Wrapper für
.ps1-Skripte - Benutzerverwaltung per AD-Cmdlets
Snmp/
- SNMP-Status auslesen
- CPU/RAM/Platten/etc. abrufen
app/Models/
Reine Datenobjekte, z.B.:
User.phpServerStatus.php
Hier werden keine Aktionen ausgeführt – nur Struktur & Daten.
app/Helpers/
Werkzeuge für:
- Validation
- kleine Utility-Funktionen
- Logging-Helfer
config/
Globale Einstellungen.
config.example.php
– liegt im Repo
– enthält die Struktur, aber keine Passwörter
config.php
– echte Config
– kommt in .gitignore
– enthält LDAP-Credentials, SNMP-Settings, Pfade usw.
scripts/
Nicht-öffentliche Skripte, die vom PHP-Code aufgerufen werden.
scripts/powershell/
Hier liegen alle .ps1 Dateien:
New-AdUser.ps1Set-AdUser.ps1Disable-AdUser.ps1Import-UsersFromCsv.ps1
Diese Skripte laufen auf dem Server – niemals im Webroot.
storage/
Dynamische Dateien, die während der Laufzeit entstehen.
storage/logs/
- PHP-Logs
- Fehlerprotokolle
- Aktionen (z.B. wer welchen User angelegt hat)
storage/uploads/
- hochgeladene CSV-Dateien für Massenimporte
- ggf. später Export-Dateien
Wichtig:
Dieser Ordner wird nie versioniert und kommt in .gitignore.
docs/
Projektdokumentation.
Hier können alle Markdown-Dokumente rein:
Architektur.mdDeployment.mdAPI-Endpunkte.md- Diagramme, Erklärungen, Beispiele
Diese Unterlagen landen später im Wiki.
README.md
Beschreibung des Projekts
– Was ist das?
– Wie installiert man es?
– Wie läuft es?
.gitignore im Repository-Root
Im Hauptverzeichnis des Repositories liegt eine .gitignore-Datei. Sie sorgt dafür, dass keine temporären oder sensiblen Daten versioniert werden:
\vendor\
\.idea\
\.vscode\
\storage\
\config.php
1.2 Namespaces in diesem Projekt
App\Controllersfür Controller-KlassenApp\Services\Ldap,App\Services\Powershell,App\Services\Snmpfür technische ServicesApp\Modelsfür Datenobjekte (geplant)
Autoloading erfolgt über Composer (PSR-4).
2. Struktur auf dem IIS-Server
C:\Web\PHP_AdminTool_Projekt
├── public\ # Webroot im IIS
├── app\
├── config\
├── scripts\
│ └── powershell\
├── storage\
│ ├── logs\
│ └── uploads\
└── vendor\
Wichtige Punkte:
- IIS zeigt nur auf
public\ config\,scripts\,storage\bleiben unsichtbar für den Browser- PowerShell läuft über einen eigenen Service-Account
- AppPool-Identität erhält nur minimal benötigte Rechte
3. Warum diese Struktur gut für das Projekt ist
- sicher (Webroot klar getrennt)
- einfach zu verstehen
- klarer Ort für jede Art Datei
- PowerShell sauber gekapselt
- CSV-Verarbeitung logisch eingebettet
- SNMP & LDAP sauber strukturiert
- guter Team-Workflow
- Deployment klar und eindeutig
4. Zusammenfassung
Diese Ordnerstruktur ermöglicht:
- Klarheit
- Sicherheit
- Wartbarkeit
- Teamfähigkeit
- saubere Trennung von Frontend, Logik und Server-Skripten
Sie sorgt dafür, dass jeder sofort versteht, wohin was gehört – ohne Chaos und ohne Risiko, dass Passwörter oder Skripte versehentlich öffentlich sind.