Müsst ihr manchmal auch legacy apps warten, z.B. in Laravel 4.2?

Ältere Homestead-Version verwenden

Update Jan 2021: Auch die neuere Homestead-Box von Laravel 7 basiert auf Ubuntu 18.04 und unterstützt PHP ab 5.6 bis PHP 7.4. Ich verwende jetzt die letzte Homestead-Version vor PHP8 und MySQL 8: vbox v9.5.1 mit Homestead v10.12. Homestead lädt jetzt selbständig die passende vbox herunter.

Für ältere PHP-Anwendungen braucht ihr vielleicht auch eine Vagrantbox mit PHP-Versionen von 5.6 bis 7.3!
Seit Homestead 6 unterstützt die bekannte Vagrantbox von Laravel mehrere PHP-Versionen parallel, ganz einfach konfigurierbar. Und Homestead von Laravel 5.6 ist deren letzte Vagrantbox, die auch PHP 5.6 noch unterstützt: Die Homestead-Box von Laravel 5.6, auf Basis von Ubuntu 18.04.

Aber wie installiere ich genau diese Homestead-Box, denn die neueren Homestead-Versionen fangen schon bei PHP 7.1 an!?

Auf den folgenden Seiten finde ich die benötigten Versions-Infos:

Damit lauten die zugehörigen Homestead-Installations-Befehle wie folgt:

vagrant box add laravel/homestead --box-version 6.4.0 --provider virtualbox
git clone https://github.com/laravel/homestead.git .
git checkout v7.20.0

PHP-Versionen

Diese Homestead-Box unterstützt sogar PHP 5.6 bis PHP 7.3.
Der vollständige Installations-Ablauf ist unter laravel.com/docs/5.6/homestead gut beschrieben, ebenso die Auswahl der gewünschten PHP-Version für die jeweilige Domain und für die PHP-Kommandozeile.

Mehr Infos über die Verwendung einer bestimmten PHP-Version in Homestead findet ihr unter: multiple-php-versions.

Damit die z.B. Migration unter Laravel 4.2 funktioniert muss der folgende Befehl verwendet werden:

php5.6 artisan migrate

Denn für Migrationen dieser alten Laravel-Version wird "mcrypt" benötigt und dieses steht unter PHP 7.2 nicht mehr zur Verfügung.

MySQL-Version

In der vbox werden u.a. die Datenbanken MySQL 5.7.24 und 10.3.27-MariaDB bereitgestellt.

Ab MySQL 5.7 ist der "sql_mode" per default so gesetzt, dass z.B. '0000-00-00' als Datumswert nicht mehr erlaubt ist (siehe NO_ZERO_DATE). Bei Bedarf muss daher der "sql_mode" in Laravel oder per SQL-Befehl oder in der /etc/mysql/my.cnf angepasst werden!

Mail-Catcher

Homestead enthält Mailhog als Mail-Catcher. Dieser kann leicht in Laravel-Projekten verwendet werden: configuring-mailhog.

In reinen PHP-Projekten, die die PHP-Funktion "mail()" zum Versenden über "sendmail" verwenden, muss stattdessen der "sendmail_path" in der Datei "php.ini" angepasst werden. Beispiel: "/etc/php/7.0/fpm/php.ini"

sendmail_path = /usr/local/bin/mhsendmail

Die ausführbare Datei "mhsendmail" kann direkt von mhsendmail-releases ins Verzeichnis "/usr/local/bin/" heruntergeladen oder aus mhsendmail installiert werden.

Gutes Gelingen!

Nächster Beitrag Vorheriger Beitrag