Installation einer neueren PHP-Version auf einem älteren Ubuntu

Es kommt gerade bei den LTS-Versionen von Ubuntu immer häufiger vor, dass eine Software zwingend eine neuere PHP-Version voraussetzt, als auf einem Server mit einem Ubuntu Betriebssystem gerade installiert ist. Wie kann ein solche Herausforderung lösen?

Eine Möglichkeit diese Anforderung zu erfüllen ist ein Upgrade des Ubuntu auf ein neues Release. Oft möchte man dies aber nicht, da es andere Abhängigkeiten gibt, oder weil man nicht jeden Releasewechsel mitmachen möchte. Auch kann es vorkommen, dass selbst das neuste LTS Release ein zu alte Version von PHP beinhaltet. Somit stellt sich die Frage, nach einer Alternative zu einem Releasewechsel.

Dank dem offiziellen Repository für PHP von Ondřej Surý auf Launchpad gibt es eine weitere Lösung. Wenn man dieses Repository einbindet, wird es auch auf eine älteren Release von Ubuntu möglich neuere PHP Versionen zu installieren. Man kann z.B. auch auf einem Ubuntu 16.04 oder 18.04 problemlos ein ganz aktuelles PHP 7.4 installieren.

Um das Repository für PHP von Ondřej Surý bei einem Ubuntu 16.04 einzubinden, gibt man den folgenden Befehl in der Kommandozeile ein.

sudo add-apt-repository ppa:ondrej/php

Danach kann man ein PHP 7.4 mit den folgenden Zeilen installieren.

sudo apt-get update
sudo apt-get install php7.4

Im Anschluss sollte man noch einige Komponenten von PHP 7.4 installieren, welche meistens benötigt werden.

sudo apt-get install php7.4-common php7.4-mysql php7.4-xml php7.4-xmlrpc php7.4-curl php7.4-gd php7.4-imagick php7.4-cli php7.4-dev php7.4-imap php7.4-mbstring php7.4-opcache

Sobald das durch ist, kann man die Standard PHP-Version innerhalb des Betriebssystem mit den folgende Befehlen festlegen.

sudo update-alternatives --config php
sudo update-alternatives --config php-cgi

Und schon kann man auch Software installieren, die das aktuelle PHP 7.4 voraussetzt …

Magento: Zwischensummen und Versandkosten inkl. MWSt. anzeigen

Lustiger Weise gibt es bei Magento bis zur aktuellen Version 1.3.2.4 immer noch keine Einstellung, um die Zwischensumme und die die Versandkosten inklusive MWSt. anzuzeigen. Dies ist insbesondere bei einem deutschen B2C-Shop jedoch dringend erforderlich. Ansonsten geht man das Risiko ein von der Konkurrenz kostenpflichtig Abgemahnt zu werden.

Gott sei dank war Tschan so nett im Magento-Forum eine Anleitung zu posten. Diese besteht aus zwei Schritten:

1. Oben in die Datei /app/design/frontend/default/YourTheme/template/checkout/total/default.phtml das folgende einfügen.

getTotals();

if ($this->getTotal()->getCode() == 'subtotal') {
    $subtotal = $this->getTotal()->getValue();
    $subtotal += $totals['tax']->getValue()-$totalsObj->getQuote()->getShippingAddress()->getShippingTaxAmount();
    $this->getTotal()->setValue($subtotal);
    $this->getTotal()->setTitle(Mage::helper('sales')->__('Subtotal incl. Tax'));
}

if ($this->getTotal()->getCode() == 'shipping') {
    $shipping = $this->getTotal()->getValue();
    $shipping += $totalsObj->getQuote()->getShippingAddress()->getShippingTaxAmount();
    $this->getTotal()->setValue($shipping);
}

?>

2. In die beiden Dateien /app/design/frontend/default/YourTheme/template/sales/order/items.phtml und /app/design/frontend/default/YourTheme/template/email/order/items.phtml nach der Zeile getOrder() ?> das folgende einfügen.

getSubtotal() + $_order->getTaxAmount() - $_order->getShippingTaxAmount();
$_order->setSubtotal($subtotalInclTax);

$shippingInclTax = $_order->getShippingAmount() + $_order->getShippingTaxAmount();
$_order->setShippingAmount($shippingInclTax);

?>

Magento für einen deutschen Webshop einrichten

Um Magento für einen deutschen Webshop (B2C Markt) zu verwenden sollte man in jedem Fall zwei Anpassungen machen. Zum einen sollte man eine automatische Update-Funktion einbauen, um Sicherheitsupdates schnell einspielen zu können und zum anderen sollte man den eigentlich englischen Webshop an die deutsche Sprache und Rechtslage anpassen. Diese Anpassungen können am schnellsten über den Magento Connect-Manager installiert und konfiguriert werden. Diesen findet man im Magento Admin-Panel unter System->Magento Connect->Magento Connect Manager. Bei dem Start des Managers wird man erneut aufgefordert sich einzuloggen und es haben nur Benutzer mit Admin-Rechten Zugang.

Update und Verwaltung der einzelnen Module
Magento ist “out of the box” verwendbar, sieht aber im Connect-Manager noch etwas puritanisch aus. Dieser bringt z.B. keine direkte Updatefunktion mit und listet keinerlei Erweiterungen auf. Um diese Auflistung zu erreichen und Magento-Extensions zu verwalten empfiehlt es sich als erstes die Erweiterungen “Mage_Downloader” und “Mage_All_Latest” zu installieren. Durch die Installation dieser beiden Module werden die benötigten Pakete nochmals heruntergeladen und installiert. Dabei werden aber die einzelnen Versionen der Module festgehalten. Dadurch kann später geprüft werden, ob es neuere Versionen der verwendeten Module gibt. Gegebenen Falls können diese dann installiert werden. Nähere Informationen zu der Installation der beiden Module findet man in dem exzellenten Blog mxperts.de (von Johannes Teitge und Daniel Sasse).

Anpassung an die deutsche Sprache und das deutsche Recht
Insbesondere die Anpassungen an alle Belange des deutschen Rechts sind sehr umfangreich und man läuft Gefahr sich eine kostenpflichtige Abmahnung einzuhandeln, wenn man diese unterlässt. Deshalb gibt es inzwischen einige Module, die man dafür verwenden kann. Ich würde gerade Neulingen bei Magento deshalb empfehlen das Modul “market_ready_germany” zu installieren. Es versucht alle benötigten Module (im Augenblick sind es 14) in einem Abwasch zu installieren. Man sollte das Modul aber nur bei neu installierten Shops verwenden, da es zu Problemen kommt, wenn es beispielsweise schon eine Seite “agb” oder “Impressum” gibt.

Und dann die restlichen Anpassungen …
Nach den eben beschriebenen Installationen und Einstellungen hat man eine Gute Grundlage für einen deutschen Webshop und kann mit seinen individuellen Einstellungen und Erweiterung fortfahren. Hierfür kann man noch mal einen Blick auf eine Liste von weiteren interessanten Modulen werfen, die man wiederum bei mxperts.de findet. Es ist auch empfehlenswert die internen Caches zu deaktivieren, solange man den Shop an die eigenen Bedürfnissen anpasst. Dann werden die Änderungen immer gleich im Shop Frontend sichtbar. Man findet die entsprechenden Einstellungen im Magento Admin-Panel unter System->Cache Verwaltung->Cache Kontrolle->Alle Caches->Deaktivieren.

Update:
Magento zeigt im Augenblick leider immer noch die Zwischensumme und den Versand im Warenkorb und den Bestellungen ohne MWSt. an. Man muss Magento deshalb wie in diesem Post beschrieben etwas umprogrammieren.

Viel Spaß mit Magento!