ubuntuusers.de

Laminas

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

./laminas-foundation-logo.png Laminas 🇬🇧 (deutsch: „Schichten“ oder „Lagen“), ehemals Zend Framework, ist ein Bündel professioneller Programm-Bibliotheken für die Skriptsprache PHP. Die flexible Architektur dieses Frameworks ermöglicht es Entwicklern, je nach Bedarf von den derzeit über 60 verfügbaren offiziellen Paketen einzelne auszuwählen und zu nutzen. Laminas zählt damit zu den sogenannten Komponenten-orientierten Frameworks, hat aber auch sämtliche Module integriert, um sofort eine Anwendung nach dem Model View Controller Muster (MVC) zu starten. Laminas setzt konsequent das OOP-Paradigma (Objektorientierte Programmierung) um, folgt den PHP-FIG 🇬🇧 Standards und implementiert die PSR-7-Spezifikationen. Das Framework ist Open Source (New BSD License) und wird auf Github 🇬🇧 gehostet. Laminas wird unter dem Dach der Linux Foundation 🇬🇧 aktiv weiterentwickelt und gehört mit nach eigenen Angaben 400 Millionen aktiven Installationen zu dem wichtigsten Frameworks in der PHP-Welt.

Die verschiedenen Versionen

Zend Framework

Bis Anfang 2020 hatte Laminas noch den Namen Zend Framework und wurde von der US-amerikanischen Firma Zend gesponsert. Zwar sind sämtliche Zend Framework Pakete noch auf Github verfügbar, diese sind aber dort archiviert und werden nicht mit Updates versorgt und sollten daher nicht mehr verwendet werden.

Achtung!

Bis einschließlich Ubuntu 18.10 ist noch Zend Framework 1 in den Paketquellen (universe) enthalten und hat dort den Paketnamen zend-framework. Ebenso sind auch vereinzelte Komponenten von Zend Framework 2 aus den Ubuntu Paketquellen installierbar (php-zend-*, universe). Alle dies Pakete werden nicht mehr mit Updates versorgt und sollten auf keinen Fall mehr genutzt werden.

Migration von Zend Framework zu Laminas

Für bestehende Zend Framework Projekte wird eine Migration zu Laminas empfohlen, was relativ schnell und mit wenig Aufwand möglich ist. Eine detaillierte Anleitung gibt es dazu im Unterartikel Laminas/Migration von Zend Framework zu Laminas.

Weitere Projekte

Neben den Einzelkomponenten sowie des MVC-Frameworkes gibt es noch folgende Unterprojekte:

  • Mezzio 🇬🇧 (ehemals Zend Expressive) - für kleinere Web-Anwendungen und Microservices

  • Laminas API Tools 🇬🇧 (ehemals apigility) - zum Erstellen von API-basierten Anwendungen

Auf diese Unterprojekte wird in diesem Artikel nicht weiter eingegangen.

Systemvoraussetzungen

Laminas benötigt eine funktionierende PHP-Installation. Laminas gibt als Mindest-PHP-Version 5.6 an. Diese Version ist jedoch veraltet, wird nicht mehr mit Sicherheitsaktualisierungen versorgt und sollte keinesfalls mehr genutzt werden. Besser ist es, mindestens die derzeit von Ubuntu unterstützten Versionen zu nutzen, namentlich PHP 7.0 unter Ubuntu 16.04 oder die PHP-Version 7.2 unter Ubuntu 18.04. Für Webanwendungen, was der der übliche Einsatz von Laminas ist, wird zusätzlich ein laufender Webserver benötigt, idealerweise Apache mit der mod_rewrite-Erweiterung.

Einzelne Komponenten nutzen

Laminas empfiehlt für die Installation und Verwaltung seiner Komponenten die PHP-Paketverwaltungssoftware Composer. Eine Installation ist aber auch direkt mit Git oder per einfachen Download möglich.

Eine Übersicht aller Komponenten befindet sich in der offiziellen Dokumentationsseite 🇬🇧.

Die Installation mit Composer im Terminal ist denkbar einfach:

composer require laminas/laminas-UND-PAKETNAME 

UND-PAKETNAME mit dem gewünschten Paket ersetzen, zum Beispiel

composer require laminas/laminas-captcha 

um das Captcha-Modul 🇬🇧 von Laminas zu installieren.

In dem Skript, in dem man die Bibliothek(en) von Laminas nutzen möchte, bindet man nun die von Composer erstellte Datei vendor/autoload.php ein und schon hat man Zugriff auf sämtliche mittels Composer installierten Laminas-Klassen. Ein Beispiel-Skript könnte so aussehen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
<?php
// Composer autoloading.
// Wir gehen davon aus, dass dieses Skript sich eine Ebene über
// den von Composer erstellten vendor-Verzeichnis befindet
include __DIR__ . '/vendor/autoload.php';

//Die Komponenten, die gebraucht werden, per Namespaces einbinden, z. B.:
use Laminas\Captcha\Figlet;

//Jetzt kann es losgehen und die Laminas-Bibliothek verwendet werden:
$captcha = new Figlet([
    'name'    => 'Test',
    'wordLen' => 6,
    'timeout' => 300,
]);

$captchaWidget = $captcha->generate();

// ...usw.

Eine MVC-Webanwendung erstellen

Laminas hat alle Komponenten an Bord, um Webanwendungen nach dem Modell-Präsentation-Steuerung-Muster (MVC) zu erstellen. So gibt es beispielsweise einen flexiblen Router, Controller-Bibliotheken und ein Template-System. Laminas bietet mit der sogenannten Laminas MVC Skeleton Application 🇬🇧 ein fertiges Projekt-Gerüst, mit dem sofort eine funktionsfähige Webanwendung nach dem MVC-Prinzip erstellt werden kann.

Installation

Mittels Composer geht man wie folgt vor:

composer create-project -s dev laminas/laminas-mvc-skeleton GEWÜNSCHTEN/PFAD/EINGEBEN 

Es werden nun alle benötigten Abhängigkeiten installiert und eine Installations-Routine fragt in Englisch mehrere Einstellungsmöglichkeiten ab. Als erstes wird abgefragt, ob man nur eine Minimal-Installation möchte, mit der zwar eine MVC-Anwendung auch sofort laufen würde, aber zahlreiche Zusatzmodule nicht installiert werden. Zum Beispiel wird laminas-db, die Datenbankverwaltungsbibliotheken von Laminas, dann nicht per Default installiert.

Do you want a minimal install (no optional packages)? Y/n

Bestätigt man hier mit "Y", werden keine weiteren Eingaben erfragt (außer die, ob die GIT-Historie gelöscht werden soll) und die Minimal-Installation wird automatisch durchgeführt. Sollten zusätzliche Komponenten benötigt werden, so wähle man "n" und es werden zahlreiche selbsterklärende Optionen angeboten.

Bitte beachten, dass bei der Installationsroutine der „development mode“ automatisch aktiviert wurde.

Es empfiehlt sich, die Laminas Developer Tools - wie weiter unten erklärt - gleich mit installieren zu lassen.

Apache konfigurieren

Zunächst das Apache-Modul mod_rewrite aktivieren - Anleitung.

Nun sicherstellen, dass Apache lokale .htaccess-Konfigurationsdateien erlaubt. Dies geschieht dadurch, dass in der Apache Konfigurationsdatei /etc/apache2/apache2.conf für das Verzeichnis /var/www/ die Einstellung AllowOverride mindestens auf FileInfo gestellt wird, in etwa so:

1
2
3
4
5
<Directory /var/www/> #Diesen Bereich suchen oder neu einfügen
	...
	AllowOverride FileInfo #AllowOverride so ändern oder einfügen 
	...
</Directory>

Wenn man aus Sicherheitsgründen auf seinem Apache Server nicht überall .htaccess-Konfigurationsdateien erlauben möchte, so kann man im Verzeichnis /etc/apache2/conf-available eine Konfigurationsdatei anlegen, die dies nur für das gewünschte Verzeichnis erlaubt, zum Beispiel so:

1
2
3
<Directory /var/www/PFAD-ZUM-LAMINAS-PROJEKT/>
	AllowOverride FileInfo
</Directory>

Anschließend die Konfigurationsdatei mittels folgenden Konsolenbefehl aktivieren:

 sudo a2enconf NAME-DER-NEUEN-KONFIGURATIONS-DATEI 

Nach allen Konfigurationsänderungen muss Apache die Einstellungen neu einlesen. Dies ist wie folgt möglich:

sudo service apache2 reload 

Achtung!

Für eine Laminas-Anwendung, die per Apache aus dem Internet erreichbar ist, sollte nur das Unterverzeichnis public/ innerhalb der Laminas-Applikation erreichbar sein. Ein Zugriff auf die Verzeichnisse config/, vendor/, usw. kann ein erhebliches Sicherheitsrisiko darstellen.

Den eingebauten Server von PHP nutzen

Alternativ kann man zu Testzwecken auch den eingebauten Server von PHP 🇩🇪 nutzen, was recht komfortabel ist, da er zahlreiche Debuging-Informationen in der Konsole ausgibt. Laminas liefert dazu ein Composer-Skript mit, das wie folgt im Wurzelverzeichnis der Laminas-Anwendung ausgeführt werden kann:

composer serve 

Es ist aus Sicherheitsgründen jedoch ratsamer, den Server im Gegensatz zum Composer-Skript von Laminas besser nur auf der Adresse 127.0.0.1 laufen zu lassen und zwar folgendermaßen:

php -S 127.0.0.1:8080 -t public public/index.php 

Unter Ubuntu 16.04 muss der PHP-Server wie folgt gestartet werden:

php -S 127.0.0.1:8080 -t public  

Die Port-Angabe - hier 8080 - kann natürlich nach eigenem Gusto verändert werden. Für das Composer-Skript hierfür in der Datei composer.json im Hauptverzeichnis der Laminas-MVC-Anwendung im Bereich "scripts" den Eintrag "serve" entsprechend ändern.

Achtung!

Aus Sicherheitsgründen niemals den PHP Server für Produktiv-Server oder für Rechner, die über den Port, den der PHP-Server nutzt, aus dem Internet erreichbar sind, nutzen.

Die Anwendung aufrufen

Nun kann in einem beliebigen Webbrowser die MVC-Anwendung aufgerufen werden.

http://127.0.0.1/PFAD/ZUM/Laminas-PROJEKT wenn man Apache nutzt

oder

http://127.0.0.1:8080 wenn man den PHP-Server mit dem Port 8080 nutzt.

Wenn alles geklappt hat, erscheint folgende Seite: laminas-mvc-screenshot.png

Die Laminas-MVC-Anwendung ist modular aufgebaut. Üblicherweise geht es nun im Verzeichnis module/ weiter. Dort kann man das bestehende Modul Application/ modifizieren oder neue Module anlegen.

Problembehebung

Fehler finden und diagnostizieren

Laminas bietet zwei eigene Werkzeuge zum debuggen von Laminas-MVC-Anwendungen an:

Der development mode

Achtung!

Den development mode, der bei Neuinstallationen der Laminas MVC Skeleton Application immer automatisch aktiviert wird, in produktiven beziehungsweise über das Internet öffentlich zugänglichen Laminas-Anwendungen unbedingt wieder deaktivieren.

Ist der sogenannte development mode 🇬🇧 der MVC-Anwendung aktiviert, so wird der Cache deaktiviert, zusätzliche Informationen bei Programmfehlern ausgegeben, sowie alle Konfigurationsdateien im Verzeichnis config/ mit berücksichtigt, die die Endung development.local.php oder development.global.php haben. Dies ist hilfreich bei der Fehlersuche. Der development mode wird bei der Installation der automatisch aktiviert.

Den development mode aktivieren:

composer development-enable 

Den development mode deaktivieren:

composer development-disable 

Überprüfen, ob der development mode aktiviert ist:

composer development-status 

Alle diese Befehle müssen im Wurzelverzeichnis (in dem sich die composer.json befindet) ausgeführt werden.

Laminas Developer Tools

Achtung!

Die Laminas Developer Tools niemals in produktiven beziehungsweise über das Internet öffentlich zugänglichen Laminas-Anwendungen aktiviert lassen.

Laminas bietet mit dem Modul Laminas Developer Tools 🇬🇧 ein Werkzeug-Set an, mit dem man Fehler in MVC-Anwendungen finden kann. Am besten gleich bei der Installation der MVC-Anwendung die Laminas Developer Tools mit installieren lassen. Dazu in der Installationsroutine folgende Abfrage mit y bestätigen:

Would you like to install the developer toolbar? y/N

Das Modul muss der Laminas-MVC-Anwendung bekannt sein. Deshalb fragt die Installationsroutine ab:

  Please select which config file you wish to inject 'Laminas Developer Tools' into:
  [0] Do not inject
  [1] config/modules.config.php
  [2] config/development.config.php.dist
  Make your selection (default is 0):1

Entweder mit 1 config/modules.config.php auswählen oder mit 2 config/development.config.php.dist. Letzteres ist empfehlenswerter, da dann die Laminas Developer Tools nur im sogenannten „development mode“ geladen werden (siehe oben).

Nachträgliche Installation

Hat man dies versäumt, so kann man die Developer Tools nachträglich wie folgt installieren:

composer require --dev laminas/laminas-developer-tools 

Auch hier wird wieder abgefragt, mit welcher Konfigurationsdatei die Laminas Developer Tools installiert werden sollen - siehe oben.

Abschließend noch die mitgelieferte Konfigurationsdatei in das Verzeichnis config/ kopieren, was wie folgt auf der Konsole möglich ist, wenn man sich im Wurzelverzeichnis der Laminas MVC-Anwendung befindet:

cp ./vendor/laminas/laminas-developer-tools/config/laminas-developer-tools.local.php.dist ./config/autoload/laminas-developer-tools.local.php 

Ist das Modul installiert, so findet man bei Aufruf der MVC-Web-Anwendung nun eine Werkzeugleiste unten im Fußbereich der Anwendung, die zahlreiche Debugg-Informationen bereit hält:

Abhängigkeiten werden nicht installiert

Leider kann es vorkommen, dass trotz des Gebrauchs von Composer Abhängigkeiten nicht vollständig mit installiert werden. Zum Beispiel wird beim regulären Gebrauch mit Laminas Captcha (siehe oben) folgender Fehler ausgegeben:

PHP Fatal error:  Class 'Laminas\Validator\AbstractValidator' not found in /PFAD/ZUM/PROJEKT/vendor/laminas/laminas/src/AbstractAdapter.php on line X

Dies liegt meist daran, dass Laminas die eigentlich für den Gebrauch benötigten Abhängigkeiten in den jeweiligen Komponenten-composer.json teilweise nur als require-dev deklariert und nicht im require-Bereich. Dies ist jedoch oftmals übliche Praxis in der Composer-Welt und in vielen Fällen auch so erwünscht.

Man muss die fehlenden Abhängigkeiten dann mittels composer require PAKET-BETREUER/PAKET-NAME nachinstallieren. Aufschluss über fehlende Komponenten gibt unter Umständen der Befehl:

composer suggests 

Intern

Extern

Diese Revision wurde am 8. April 2020 22:02 von mubuntuHH erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Framework, Composer, Webanwendung, PHP, Internet, Programmierung, Server, Installation