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.
Und wenn ihr zusätzlich PHP 8 mit MySQL 5.7 (Ubuntu 18.04, optional MySQL 8) benötigt, dann könnt ihr Homestead v10.17 mit der vbox v9.7.2 verwenden.
Die neue Homestead-Box von Laravel 9 unterstützt PHP 5.6 bis 8.2 mit MySQL 8.0 (Ubuntu 20.04), so dass ältere Versionen nicht mehr nötig sind. Aber MySQL 5.7 ist hier nicht mehr enthalten.
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:
- laravel.com/docs/5.6/homestead -> letzte Homestead-Version mit PHP5.6 = Homestead v7.16.1
- app.vagrantup.com/laravel/boxes/homestead bzw. github.com/laravel/settler/releases -> v6.4.0 vom 10 Nov 2018
- github.com/laravel/homestead/releases -> v7.20.0 vom 11 Dec 2018
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!