- Einführung
- Aufruf der Konsole
- Hilfe
- Anwendungsbeispiele
- Entwicklung eigener Konsolen-Skripte
- Integration der Konsole in Phpstorm
- Tipps
REDAXO liefert mehrere CLI ("Command-line interface")-Befehle und Dienstprogramme, die über die Konsole (console) ausgeführt werden können. Sie ermöglichen es u.a. REDAXO zu installieren, AddOns zu aktualisieren und den Entwicklungsprozess sowie Warungsarbeiten zu beschleunigen. AddOns oder PlugIns können den Funktionsumfang der Konsole um weiteren Befehle erweitern.
Mögliche Einsatzzwecke:
- REDAXO Installation
- AddOn-Installation / Deinstallation
- Schnittstelle für erweitere/spezielle Funktionen/Vorgänge
- Automatisierung/Skripting von Abläufen mit Zugriff auf das System
- Umgebung um sehr aufwändige Prozesse wie Migrationen, Report-Generierung o.ä. ablaufen zu lassen, ohne Timeouts etc.
- Fernwartung des Systems
- Automatisierte Veröffentlichungsprozesse der Entwicklungsstände von Websites (Deploy-Workflows)
- via AddOns erweiterbar (Befehle registrierbar, siehe untenstehendes Beispiel)
Im Rahmen einer REDAXOHour ist eine Videoeinführung entstanden, die viele Punkte dieses Kapitels erklärt.
php redaxo/bin/console
oder
redaxo/bin/console
(Hierbei sollte die Datei console
ausführbar sein)
Je nach System ist es ggf. erforderlich, die Konsole unter dem PHP-User bzw. Eigentümer des Webordners auszuführen. In diesem Fall lautet der Befehl:
sudo -u username php redaxo/bin/console
Für Docker exec sollte man -u username
an den Befehl anfügen.
Der einfache Aufruf der Konsole per console
ohne Parameter liefert eine Liste aller
aktuell verfügbaren Konsolen-Befehle.
Um mehr Informationen und Optionen zum jeweiligen Befehl zu erhalten, fügt man dem Aufruf des Komanndos --help
als Parameter an.
z.B: console cache:clear --help
Durch den Zugriff via REDAXO Konsole können für Backend-Benutzer neue Passwörter gesetzt werden. Dies ist inbesondere dann hilfreich, wenn kein Admin-Zugriff via Backend mehr möglich ist.
php redaxo/bin/console user:set-password <username> <passwort>
Da in der Konsole in der Regel weniger Restriktionen gegeben sind, können umfangreiche Datenbanksicherungen erstellt oder wiederhergestellt werden. Inbesondere für große Datenbanken ist dies ein effizienter Weg zur Sicherung.
Erzeugt eine Sicherung in der Datei dump.sql
php redaxo/bin/console db:connection-options | xargs mysqldump > dump.sql
Wiedereinspielen einer vorher erstellten Sicherung aus der Datei dump.sql
.
In der Datenbank enthaltene Tabellen und Daten werden dabei überschrieben!
php redaxo/bin/console db:connection-options | xargs sh -c 'mysql "$0" "$@" < dump.sql'
Um die Entwicklung von AddOns und PlugIns zu erleichtern, ist es möglich Dateien zwischen dem öffentlich zugänglichen assets/
Ordner und den AddOn/PlugIn Quellen unter redaxo/src/addons
zu synchronisieren.
php redaxo/bin/console assets:sync
Bei der Entwicklung von AddOns und PlugIns ist es beim Verwenden von Datenbank Tabellen notwendig, diese bei der Installation des AddOns/PlugIns anzulegen. Dafür bietet REDAXO eine Schema API, die es erlaubt Tabellen zu erzeugen und zu migrieren.
Der dafür notwendige PHP Code lässt sich mittels Konsolen-Befehl erzeugen, um Ihn anschließend in die install.php
zu kopieren.
php redaxo/bin/console db:dump-schema <tabellenname>
Die Ausführung eines Konsole Befehls erfordert eine eigene Klasse, die auf rex_console_command
aufbaut und den ausführbaren Code selbst enthält bzw. aufruft. In dieser Klasse muss es eine Methode execute
geben. Die einfachste Form sieht etwa so aus:
class mein_console_befehl extends rex_console_command {
protected function execute() {
echo "hallo redaxo"; // beliebiges php hier
}
}
Falls die implementierte Funktionalität sowohl via Weboberfläche als auch REDAXO Konsole zugreifbar sein sollte, würde es sich anbieten die entsprechende Logik in einer separaten PHP Klasse zu implementieren und diese aus der o.g. Klasse heraus aufzurufen.
Damit der ausführbare Befehl in der REDAXO Konsole zugänglich ist, muss er noch in der package.yml eines AddOns als solcher definiert werden.
Beispiel
console_commands:
meinaufruf:befehl: mein_console_befehl
Da die REDAXO Konsole auf der symfony/console
Bibliothek aufsetzt, kann die REDAXO Konsole wie eine herkömmliche Symfony-Console mit Phpstorm integriert werden.
Dies ist möglich, sobald das REDAXO-Setup abgeschlossen wurde.
Um die Bedienbarkeit der Konsole zu verbessern, ist es möglich ein Autovervollständigungs-Skript zu verwenden, dass auf der Konsole durch doppeltes drücken der TAB Taste ausgelöst wird.