{"id":350,"date":"2021-11-14T20:41:33","date_gmt":"2021-11-14T19:41:33","guid":{"rendered":"https:\/\/jet0jlh.de\/?p=350"},"modified":"2022-04-09T11:38:51","modified_gmt":"2022-04-09T09:38:51","slug":"update-von-php-7-auf-8-fuer-unsere-nextcloud","status":"publish","type":"post","link":"https:\/\/jet0jlh.de\/?p=350","title":{"rendered":"Update von PHP 7 auf 8 f\u00fcr unsere Nextcloud"},"content":{"rendered":"\n<p>Der Support f\u00fcr PHP 7 l\u00e4uft nun St\u00fcck f\u00fcr St\u00fcck aus und die Nachfolgerversion 8 ist bereits eine Weile auf dem Markt.<\/p>\n\n\n\n<p>Die Nextcloud unterst\u00fctzt auch schon l\u00e4nger PHP 8 und allgemein, soll durch 8 auch noch ein bisschen mehr Leistung rausgeholt werden. Also warum nicht langsam mal updaten?<\/p>\n\n\n\n<p>Bitte seid aber beim Updaten vorsichtig. Ich w\u00fcrde strengstens, gerade den nicht so fitten Benutzern, raten ein vollst\u00e4ndiges Backup des kompletten Betriebssystems zu machen (Beim Raspberry einfach eine Kopie der Karte z. B. mit dem Win32Diskimager erstellen). Durch die &#8222;nicht standard&#8220; Paketquellen die wir zwangsweise einbinden m\u00fcssen, wird es zuk\u00fcnftig ein bisschen komplizierter, da nun mehrere PHP Versionen zur Verf\u00fcgung stehen.<\/p>\n\n\n\n<p>Wichtig f\u00fcr dieses Tutorial ist, dass ihr wisst welche PHP Version ihr aktuell nutzt und welche die aktuelle ist, die gerade angezogen wird. Die Alte kann man \u00fcber die Nextcloud selber \u00fcber Einstellungen\/System rausfinden und die aktuelle sieht man bei der Installation (oder \u00fcber php -version). Schlie\u00dflich wird nicht ewig PHP 8.0 die aktuelle Version sein. \ud83d\ude05<\/p>\n\n\n\n<p>Somit w\u00e4re unser erster Schritt unser Ger\u00e4t auf den neusten Stand zu bringen, bevor wir das eigendlich Update angehen. Daher zu Beginn erst einmal dauerhafte Adminrechte verschaffen und das System aktualisieren.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo -s\napt update\napt upgrade<\/pre>\n\n\n\n<p>Wenn nun alles aktuell ist, machen wir unserem Linuxsystem nun die neuen PHP Paketquellen bekannt. Dieser Vorgang besteht aus drei Schritten. (Codebeispiel anhand eines Debian Systems)<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Schl\u00fcssel\/Zertifikat der neuen Paketquelle herunterladen und bei den vertrauensw\u00fcrdigen Herausgebern hinzuf\u00fcgen.<\/li><li>Die neue Paketquelle unserem Paketmanager (apt) \u00fcber eine neue Konfigurationsdatei bekannt machen.<br>Das machen wir \u00fcber einen Befehl, der uns automatisch die notwendigen Infos f\u00fcr die Konfigurationsdatei sammelt und diese dann auch gleich erstellt.<\/li><li>Unseren Paketmanager alle (auch die neuen) Paketquellen durchsuchen lassen.<\/li><\/ol>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">sudo wget -O \/etc\/apt\/trusted.gpg.d\/php.gpg https:\/\/packages.sury.org\/php\/apt.gpg\necho \"deb https:\/\/packages.sury.org\/php\/ $(lsb_release -sc) main\" > \/etc\/apt\/sources.list.d\/php.list\napt update<\/pre>\n\n\n\n<p>Und nun sollte unser Linux alle notwendigen Pakete kennen, die zum Update ben\u00f6tigt werden. Fr\u00fcher habe ich hier an dieser Stelle nun nur noch <code>apt upgrade<\/code> durchgef\u00fchrt. Es hat sich allerdings als nicht sehr vorteilhaft erwiesen, PHP ohne explizieter Versionsnummer zu installieren. Daher sollte man den m\u00fchsamen Weg gehen und jedes ben\u00f6tigte Modul ausfindig machen und per Hand mit der richtigen Versionsnummer installieren. Hierzu kann man sich diese per apt ausgeben lassen und direkt auf 8.0 umbauen, damit man nur noch kopieren muss \ud83d\ude05<br>Vorsicht: nicht jedes Paket was unter 7.3 vorhanden war, gibt es auch unter 8.0 und wird ggf. gar nicht mehr ben\u00f6tigt.<br><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#Alle installierten PHP7.3 Module anzeigen lassen\napt list --installed | grep php7.3\n\n#Oder f\u00fcr die Faulen kann man auch alle PHP Module die unter 7.3 installiert sind anzeigen lassen und den Text f\u00fcrs leichte Kopieren gleich auf 8.0 umschreiben lassen:\napt list --installed | grep php7.3 | sed 's\/\\\/.*$\/\/' | sed 's\/7.3\/8.0\/g'\n\n#Danach die Installation von den jeweiligen php Modulen\napt install php8.0\napt install php8.0-intl\napt install ...\n...\n...<\/pre>\n\n\n\n<p>PHP8 sollte nun zwar installiert sein, aber ist noch nicht aktiv. Hierzu fehlen noch ein paar Schritte.<br>Wir sollten als erstes pr\u00fcfen ob php8.0 nun von der Komadozeile angezogen wird und wenn nicht dies \u00e4ndern.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">php -version\n#Sollte hier nicht 8.0 stehen, so muss das mit dem nachfolgenden Befehl ge\u00e4ndert werden indem man diesen abschickt und die Zeilennummer eingibt in der php8.0 steht\nupdate-alternatives --config php<\/pre>\n\n\n\n<p><br>Nun deaktivieren wir das Apache PHP7 Modul (Bei mir 7.3) und aktivieren das neue PHP8 Modul (Bei mir 8.0).<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">a2dismod php7.3\na2enmod php8.0<\/pre>\n\n\n\n<p>Da wir uns nun auf einer neuen PHP Version befinden, m\u00fcssen wir diese noch f\u00fcr unsere Cloud konfigurieren. Unter anderem deswegen, dass unser Nextcloud mit einem Memcache konfiguriert wurde, der sonst nicht mehr funktioniert.<\/p>\n\n\n\n<p>Daher bearbeiten wir die Datei \/etc\/php\/8.0\/apache2\/php.ini und suchen nach den unteren Eintr\u00e4gen und bearbeiten die Werte wie beschrieben (Ein ; am Anfang einer Zeile sorgt daf\u00fcr, dass diese Ignoriert wird. Daher muss dies entfernt werden um die genannten Einstellungen auch zu setzen).<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"ini\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">memory_limit = 512M\nopcache.enable=1\nopcache.enable_cli=1\nopcache.memory_consumption=128\nopcache.interned_strings_buffer=8\nopcache.max_accelerated_files=10000\nopcache.revalidate_freq=1 \nopcache.save_comments=1<\/pre>\n\n\n\n<p>Vielleicht f\u00e4llt es auf, aber es handelt sich hierbei 1 zu 1 um die Gleichen Einstellungen die wir bereits damals f\u00fcr PHP 7 gesetzt hatten.<\/p>\n\n\n\n<p>Wenn wir schon beim Bearbeiten sind f\u00fcgen wir gleich noch in der Datei \/etc\/php\/8.0\/cli\/php.ini folgende Zeile ein.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"ini\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apc.enable_cli = 1<\/pre>\n\n\n\n<p>Nun k\u00f6nnen wir all unsere \u00c4nderungen aktiv schalten und gucken ob unsere Cloud wieder funktioniert.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">systemctl restart apache2<\/pre>\n\n\n\n<p>Ab jetzt sollte der Login wieder klappen. (Wenn nicht dann weiter zum n\u00e4chsten Punkt) Gepr\u00fcft wird nat\u00fcrlich wie gehabt \u00fcber Einstellungen\/Allgemein. Sollte der Sicherheitscheck keine Fehler spucken w\u00e4re das Update nun erfolgreich abgeschlossen (Zur Sicherheit mal noch unter Einstellungen\/System gucken ob auch wirklich eine 8er PHP Version angezeigt wird \ud83d\ude05).<br><\/p>\n\n\n\n<p>Bei mir gab es beim Update allerdings das Problem, dass zwei PHP Module nicht installiert wurden. Imagick und leider der Memcache woduch die ganze Cloud gar nicht erst lauff\u00e4hig war.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apt install php8.0-imagick\napt install php8.0-apcu\nsystemctl restart apache2<\/pre>\n\n\n\n<p>Sollten noch weitere Module fehlen, so k\u00f6nnen diese \u00fcber den gleichen Weg nachinstalliert werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der Support f\u00fcr PHP 7 l\u00e4uft nun St\u00fcck f\u00fcr St\u00fcck aus und die Nachfolgerversion 8 ist bereits eine Weile auf dem Markt. Die Nextcloud unterst\u00fctzt auch schon l\u00e4nger PHP 8 und allgemein, soll durch 8 auch noch ein bisschen mehr Leistung rausgeholt werden. Also warum nicht langsam mal updaten? Bitte&#8230; <a href=\"https:\/\/jet0jlh.de\/?p=350\">Read more &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-350","post","type-post","status-publish","format-standard","hentry","category-allgemein"],"_links":{"self":[{"href":"https:\/\/jet0jlh.de\/index.php?rest_route=\/wp\/v2\/posts\/350","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jet0jlh.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jet0jlh.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jet0jlh.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jet0jlh.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=350"}],"version-history":[{"count":8,"href":"https:\/\/jet0jlh.de\/index.php?rest_route=\/wp\/v2\/posts\/350\/revisions"}],"predecessor-version":[{"id":369,"href":"https:\/\/jet0jlh.de\/index.php?rest_route=\/wp\/v2\/posts\/350\/revisions\/369"}],"wp:attachment":[{"href":"https:\/\/jet0jlh.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=350"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jet0jlh.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=350"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jet0jlh.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}