PHP 7 unter CentOS 7 installieren

Nachdem ich letzte Woche gezeigt habe, welche Probleme man sich einhandeln kann, wenn man von PHP 5.6 auf PHP 7 wechselt, möchte ich heute einmal zeigen, wie man überhaupt zu PHP 7 wechseln kann. Da ich inzwischen mit allen Servern zu CentOS migriere, wird es das erste Mal sein, dass es sich nicht um ein Debian-Beispiel handelt. Das Gute an CentOS ist, dass es eine recht stabile Distribution ist - jedes Major Release erhält 10 Jahre lang Support. Das Schlechte an CentOS ist, dass viele Pakete dadurch in einer recht alten Version vorliegen, die lediglich mit Bug- und Security-Fixes versorgt werden. Bei meinen Webserverinstallationen möchte ich hingegen lieber neue Versionen betreiben, um neue Features zu erhalten.

Bei der Installation einer neueren Version hat man mehrere Möglichkeiten: entweder, man kompiliert PHP 7 selbst oder man setzt ein Dritt-Repository ein, in dem bereits vorkompilierte Pakete für PHP 7 enthalten sind. In diesem Fall habe ich mich für zweiteres entschieden. Mit ius.io gibt es für CentOS 7 ein Repository, in dem die wichtigsten Pakete enthalten sind und das aufgrund der Unterstützung des Hosters Rackspace lange erhalten bleiben sollte.

Um das Repository von IUS verwenden zu können, muss man im ersten Schritt deren RPM-Paket installieren, das sich darum kümmert, das Repository im System einzukonfigurieren:

1
2
3
wget "https://centos7.iuscommunity.org/ius-release.rpm"
sudo rpm -i ./ius-release.rpm
rm ./ius-release.rpm

Zusätzlich muss noch der öffentliche Schlüssel importiert werden, mit dessen Hilfe die Signaturen der heruntergeladenen Pakete überprüft werden können:

1
sudo rpm --import /etc/pki/rpm-gpg/IUS-COMMUNITY-GPG-KEY

Wenn man es noch nicht getan hat, sollte man weiterhin das EPEL-Repository mit einbinden, das weitere hilfreiche - und meist aktuellere - Software enthält. Das lässt sich durch die Softwareverwaltung realisieren:

1
sudo yum install epel-release

In meinem Fall installiere ich neben PHP auch immer gleich MariaDB und NGINX. Das IUS-Repository enthält auch eine aktuellere Version von MariaDB. Damit man diese installieren kann, müssen jedoch vorher die bereits vorhandenen "mariadb-libs" entfernt werden. Im Zuge dessen wird auch Postfix deinstalliert - wir werden es einfach im Anschluss erneut installieren:

1
sudo yum remove mariadb-libs

Nun können wir die gewünschte Software über die Softwareverwaltung installieren - Pakete, die über IUS installierten werden, enthalten immer den Suffix "u", um sie leichter erkennen zu können und Kollisionen mit Standardpaketen zu vermeiden:

1
sudo yum install mariadb101u-server nginx php70u-cli php70u-fpm php70u-gd php70u-imap php70u-intl php70u-json php70u-ldap php70u-mbstring php70u-mcrypt php70u-mysqlnd php70u-pdo php70u-pear php70u-pgsql php70u-process php70u-pspell php70u-recode php70u-soap php70u-xml php70u-xmlrpc postfix

Im Grunde ist man an dieser Stelle nun fertig und hat sein CentOS 7 mit PHP 7 ausgestattet. In meinem Fall gab es jedoch noch ein paar Dinge mehr zu tun, da ich SSH-Support in meinem PHP benötige. Da es hierfür von IUS noch kein fertiges Paket gibt (wohl deshalb, weil der SSH-Support für PHP 7 noch nicht stable ist), musste ich mir die Erweiterung selbst zusammen kompilieren.

Um das zu tun, müssen wir erst einmal noch weitere, benötigte Pakete installieren:

1
sudo yum install autoconf automake make openssl-devel php70u-devel unzip wget zip

Als nächstes holen, kompilieren und installieren wir die aktuelle Version der "libssh2"-Bibliothek:

1
2
3
4
5
6
7
8
9
10
wget https://www.libssh2.org/download/libssh2-1.7.0.tar.gz
tar -xzvf ./libssh2-1.7.0.tar.gz
cd ./libssh2-1.7.0
./configure
make
sudo make install
make clean
cd ..
rm ./libssh2-1.7.0.tar.gz
rm -R ./libssh2-1.7.0

Auf Github hat sich jemand die Mühe gemacht, die Quellen für PHP 7 kompilierbar einzurichten - dessen Änderungen werden auch die Basis für das zukünftige SSH-Modul sein. An dieses Github-Repository habe ich mich gehangen und alles selbst kompiliert. Sobald das stabilisierte Pakete bei IUS aufgenommen wurde, sollte man natürlich lieber auf dieses wechseln:

1
2
3
4
5
6
7
8
9
10
11
12
wget https://github.com/Sean-Der/pecl-networking-ssh2/archive/master.zip
unzip ./master.zip
cd ./pecl-networking-ssh2-master
phpize
./configure
make
sudo make install
make clean
cd ..
rm ./master.zip
rm -R ./pecl-networking-ssh2-master
sudo sh -c "echo 'extension=ssh2.so' >/etc/php.d/20-ssh2.ini"

Und schon hat man PHP 7 auf seinem CentOS 7 installiert und ist weiterhin bleading-edge unterwegs. 🙂

Aktualisierte Grüße, Kenny

Link Indication Plugin unter PHP 7 nutzen

Mit dem Wechsel von PHP 5.6 auf PHP 7 sind leider auch ein paar altgediente Plugins bei mir kaputt gegangen. Ein weiteres davon ist das Link Indication-Plugin, das ich vor einiger Zeit schon mal ein wenig angepasst hatte.

Um das Plugin unter PHP 7 wieder lauffähig zu bekommen, gehen wir in die Datei "./link-indication.php". Dort muss eine einzige Änderung vorgenommen werden, da das Plugin noch die Funktion eregi_replace() verwendet, die inzwischen entfernt wurde.

Hierzu suchen wir in der Funktion "LinkIndicationMain" nach dem einzigen Aufruf von "eregi_replace" und ersetzen die gesamte Zeile durch folgende neue Version:

1
2
3
4
5
                // ...

                $final_stuff = preg_replace('/[[:space:]]+/i', ' ', $final_stuff);

                // ...

Voila! Nun sollte das Plugin endlich wieder funktionieren.

Erneut reparierte Grüße, Kenny

P.S.: Ja, mir ist bekannt, dass auch dieses Plugin inzwischen bereits ziemlich outdated ist. Da ich allerdings aktuell an einem größeren Umbau werkele, lohnt sich ein Wechsel auf ein neues Link-Indication-Plugin im Moment einfach nicht. 😀

CodeColorer Plugin unter PHP 7 nutzen

Mit dem Wechsel von PHP 5.6 auf PHP 7 sind leider auch ein paar altgediente Plugins bei mir kaputt gegangen. Eines davon ist das CodeColorer-Plugin, das ich für das Syntax-Highlighting im Blog verwende.

Um das Plugin unter PHP 7 wieder lauffähig zu bekommen, gehen wir in die Datei "./codecolorer-core.php". Dort müssen drei kleinere Änderungen vorgenommen werden, da das Plugin noch den "/e"-Modificator in preg_replace()-Aufrufen verwendet, der inzwischen entfernt worden ist.

Als erstes suchen wir die Funktion "BeforeHighlightCodeBlock" und ersetzen sie durch diese neue Fassung:

1
2
3
4
5
6
  function BeforeHighlightCodeBlock($content) {
    $content = preg_replace_callback('#(\s*)\[cc([^\s\]_]*(?:_[^\s\]]*)?)([^\]]*)\](.*?)\[/cc\2\](\s*)#si', function ($params) { return $this->PerformHighlightCodeBlock($params[4], $params[3], $content, $params[2], $params[1], $params[5]); }, $content);
    $content = preg_replace_callback('#(\s*)\<code(.*?)\>(.*?)\</code\>(\s*)#si', function ($params) { return $this->PerformHighlightCodeBlock($params[3], $params[2], $content, '', $params[1], $params[4]); }, $content);

    return $content;
  }

Als nächstes suchen wir die Funktion "BeforeProtectComment" und ersetzen diese durch folgende neue Fassung:

1
2
3
4
5
6
  function BeforeProtectComment($content) {
    $content = preg_replace_callback('#(\s*)(\[cc[^\s\]_]*(?:_[^\s\]]*)?[^\]]*\].*?\[/cc\1\])(\s*)#si', function ($params) { return $this->PerformProtectComment($params[2], $content, $params[1], $params[3]); }, $content);
    $content = preg_replace_callback('#(\s*)(\<code.*?\>.*?\</code\>)(\s*)#si', function ($params) { return $this->PerformProtectComment($params[2], $content, $params[1], $params[3]); }, $content);

    return $content;
  }

Abschließend gehen wir noch in die Funktion "PerformHighlightCodeBlock". Hier ersetzen wir einen einzelnen if-Block durch eine neue Fassung:

1
2
3
4
5
6
7
8
9
    // ...

    if ($options['escaped']) {
      $text = html_entity_decode($text, ENT_QUOTES);
      $text = preg_replace_callback('~&#x0*([0-9a-f]+);~i', function ($params) { return chr(hexdec($params[1])); }, $text);
      $text = preg_replace_callback('~&#0*([0-9]+);~', function ($params) { return chr($params[1]); }, $text);
    }

    // ...

Voila! Schon sollte das Plugin auch unter PHP 7 wieder funktionieren, wie am ersten Tag.

Reparierte Grüße, Kenny

P.S.: Ja, mir ist bekannt, dass das Plugin inzwischen bereits ziemlich outdated ist. Da ich allerdings aktuell an einem größeren Umbau werkele, lohnt sich ein Wechsel auf ein neues Syntax-Highlighting-Plugin im Moment einfach nicht. 😀

Quidditch WorldCup 2016 in Deutschland

Vom 23.07. bis 24.07. war es soweit - der Quidditch WorldCup 2016 fand in Frankfurt am Main in Deutschland statt. Quidditch, für die, die es nicht wissen, ist eine Sportart aus den Harry-Potter-Romanen, die auf fliegenden Besen ausgetragen wird. 2005 kamen amerikanische Studenten auf die Idee, eine Abwandlung namens Muggle-Quidditch zu erfinden und die ersten Spiele auszutragen. Besen gibt es immer noch - nur leider ohne Flugfähigkeiten. Stattdessen behindern sie die Spieler beim Laufen, Fangen und Werfen.

Als ich im März erfuhr, dass es Muggle-Quidditch gibt, war ich Feuer und Flamme für die Idee. Als ich dann auch noch erfuhr, dass die nächste Weltmeisterschaft hier in Deutschland stattfinden würde, war für mich klar, dass ich dorthin reisen würde. 🙂

Eintrittsbändchen

Eintrittsbändchen

Die Spiele, die ich beim Quidditch WorldCup sah, waren tatsächlich die ersten, die ich live gesehen habe. Und ich muss gestehen, ich war sehr überrascht, wie hart dieser "Nerd-Sport" ausgetragen wurde. Die Härte, mit der gespielt wurde, erinnerte mich eher an eine fair ausgetragene Partie Rugby. Dementsprechend hoch war auch die Zahl der Verletzungen im Verlaufe des Turniers.
So hatte beispielsweise die südkoreanische Mannschaft das Problem, dass sie mit 7 Spielern angereist war. 7 Spieler benötigt man im Laufe eines Matches und einer ihrer Spieler verletzte sich bereits in der Vorrunde, sodass dieser den Rest des Turniers humpelnd auf dem Spielfeld stehen musste. Eine italienische Spielerin musste offenbar sogar mit einer Nasenfraktur ins Krankenhaus gefahren werden.

Impressionen Impressionen Impressionen

Impressionen

Auch hatte ich das erste Mal die Möglichkeit, einen "Sportbesen" aus der Nähe zu betrachten. Offenbar ist Petersons Brooms so ziemlich der einzige große Hersteller von Quidditch-Sportbedarf. Er war auch vor Ort mit einem Stand vertreten.

Sportbesen Sportbesen

Sportbesen

Besonders angetan hat es mir die britische Mannschaft. Nicht nur, dass sie eine sehr faire Spielweise an den Tag legte... auch ihre Fans waren zahlreich angereist und verbreiteten eine phänomenale Stimmung.
Besonders ergreifend fand ich das Vorrundenspiel der Briten gegen Südkorea. Da der südkoreanische Spieler bereits verletzt war und die südkoreanische Mannschaft auch keine großartige Fangemeinde mitgebracht hatte, entschieden sich die britischen Fans, einfach die gegnerische Mannschaft anzufeuern, um auch für sie den WorldCup zu einem tollen Erlebnis werden zu lassen.
Da die südkoreanische Mannschaft keine Ersatzspieler hatte und Quidditch ein ausdauerintensiver Sport ist, einigte man sich darauf, dass die Südkoreaner inoffizielle Auszeiten nehmen dürften, um sich zwischendurch erholen zu können.
Als der südkoreanische Seeker am Ende des Spiels dann auch noch den Snitch fing, gab es kein Halten mehr. Die britischen Fans liefen auf's Spielfeld, bejubelten den Spieler und hoben ihn auf ihre Schultern. Einfach großartig. 🙂

die britische Mannschaft und ihre Fans die britische Mannschaft und ihre Fans

die britische Mannschaft und ihre Fans

Die Vorrunde war aus meiner Sicht gut organisiert. Schade war es hingegen ein wenig, dass die Strukturierung des Finaltags erst an dessen Morgen veröffentlicht wurde. Die groben Zeitpläne hätte man ruhig schon im Vorhinein veröffentlichen können.

Spielpläne Spielpläne Spielpläne

Spielpläne

Apropos Organisation: Obwohl (oder gerade weil?) es sich um eine eher kleine Veranstaltung gehandelt hat, waren die Toiletten vorbildlich sauber und angenehm zu verwenden - obwohl es sich um Miettoiletten handelte. Es roch angenehm, sie wurden jeden Tag geleert, es gab genügend Toilettenpapier und in ihnen hing sogar eine Art Seifenspender, dank dem man sich "danach" die Hände waschen konnte. 🙂

Toiletten

Toiletten

Was bleibt, ist die Erkenntnis, dass Quidditch ein ziemlich spannender Sport sein kann, wenn die Mannschaften ebenbürtig sind... und, dass ich persönlich wahrscheinlich nicht mit dem Quidditch-Spielen anfangen werde, da meine alternden Knochen mit der Härte des Sports wahrscheinlich nicht zurecht kommen würden. Ich werde allerdings mal die Ohren offen halten, wann so die nächsten Quidditch-Spiele hier in Berlin stattfinden werden. 😀

Snitch-jagende Grüße, Kenny

30 Tage Ernährung mit Bertrand… Fazit

Nachdem die letzten Tage etwas stressig waren und ich nicht dazu kam, einen abschließenden Artikel zu schreiben, hole ich das an dieser Stelle mal nach. Hier nun also mein Fazit eines einmonatigen Bertrand-Selbstests...

Genügend Informationen, wie ich Bertrand und Trinkkost eingesetzt habe, habe ich bereits in den vorherigen Artikeln beschrieben. Deshalb würde ich mal durch meine Erwartungsliste gehen und den Realitätsabgleich machen.

Zuerst die im Vorfeld formulierten, positiven Punkte:

  • + gesündere und ausgewogenere Ernährung
    Das Gefühl, dass meine Ernährung mit den Pulvern ausgewogener ist, habe ich nach wie vor. Es fühlt sich gut an, zu wissen, dass man seinem Körper die wichtigsten Nährstoffe zuführt, ohne sich groß einen Kopf darum machen zu müssen.
  • + keine Gedanken darüber, ob/was ich essen kann
    In der Theorie mag das stimmen, aber nur, wenn man sich zu 100% von den Pulvern ernährt - was, ehrlich gesagt ziemlich schwierig und eintönig ist. Allerdings habe ich nicht mehr so ein schlechtes Gewissen, wenn ich mal was Süßes oder Fettiges esse, da ich einen gewissen Ausgleich durch die Pulver herstellen kann.
  • + kürzere Wocheneinkäufe (Wasser, Säfte, Haushaltsbedarf)
    Bei einem Single mag das durchaus zutreffen, in einem Mehrpersonenhaushalt hingegen hat man überhaupt keine Zeitersparnis beim Einkaufen.
  • + vereinfachte Essenszubereitung
    Die Zubereitung des Essens besteht zwar immer aus den gleichen Schritten, ist aber nicht zwingend vereinfacht. Der Shaker macht recht viel Arbeit beim Säubern und vor allem Trinkkost tendiert dazu, zu verklumpen, wodurch man sich an eine klumpfreie Schütteltechnik herantasten muss.
  • + bessere Gewichtskontrolle durch Portionsbeutel
    Auch das gilt eigentlich nur, wenn man sich ausschließlich vom Pulver ernährt und niemals irgendwas zusätzliches isst. Ansonsten ist es vorbei mit der problemlosen Gewichtskontrolle.
  • + mehr Freizeit, da nebenbei gegessen werden kann
    Mehr Freizeit würde ich nicht sagen, allerdings ist es durchaus angenehm, mal in der Bahn auf dem Weg zur Arbeit zu frühstücken oder Abends auf dem Weg zu einer Veranstaltung noch schnell ein Abendessen zu sich nehmen zu können. Es ist also eher ein Bequemlichkeits- als ein Zeitgewinn.

Nun zu den im Vorfeld formulierten, negativen Punkten:

  • - merkwürdiger/unangenehmer Geschmack
    Unangenehm würde ich den Geschmack nicht nennen. Bertrand ist halt primär nussig, während ein mit viel Wasser gemischtes Trinkkost recht gut nach Erdbeere schmeckt. Mit zugehaltener Nase runterwürgen muss man also weder Bertrand noch Trinkkost.
  • - langweiliges/eintöniges Essen
    Hier gibt es definitive Zustimmung. Sich ausschließlich von Bertrand zu ernähren ist zwar möglich, aber nicht erstrebenswert. Sich ausschließlich von Trinkkost zu ernähren wäre zwar erstrebenswerter, jedoch ist es von der Nährstoffzusammensetzung her nicht darauf abgestimmt, als ausschließliche Nahrungszufuhr zu fungieren.
  • - Heißhunger auf anderes/richtiges Essen
    Auch hier hat sich die Vermutung bewahrheitet. Drei Mal am Tag den gleichen nussigen Brei zu trinken macht absolut keinen Spaß.
  • - eklige/schleimige Konsistenz
    Es ist nicht ganz so schlimm, wie ich es mir vorgestellt hatte, aber angenehm ist die Konsistenz trotzdem nicht. Ein mit viel Wasser vermengtes Trinkkost ist da angenehmer.
  • - Diskussionen mit Freunden/Kollegen/Partner
    Ich hatte tatsächlich jede Menge Gespräche über das Nährpulver mit der Familie, mit Bekannten und meinen Kollegen. Viele fanden das Thema interessant und haben sich gern erklären lassen, was es damit auf sich hat. Die wenigsten wollten es selbst mal probieren.
  • - schwierige Reinigung des Shakers durch getrocknete Pampe
    Der Shaker ist tatsächlich schwierig zu reinigen, aber nicht, weil die Pampe eintrocknet, sondern weil der Shaker schlecht designed ist.
  • - nervige Umstellung der Verdauung
    Ja, die Verdauung muss sich erst umstellen, aber danach ist das Pulveressen eigentlich kein Problem mehr. Sogar im Gegenteil.
  • - soziale Events verleiten zu normalem Essen
    Auch das trifft voll und ganz zu. Mit dem Partner zu Abend essen. Mit den Kollegen Mittag essen. Mit den Eltern am Wochenende Kaffee trinken. Das alles lässt sich schlecht mit einer reinen Pulverernährung kombinieren.

Abschließend noch ein paar Fragen, die mir in dem Monat begegnet sind:

  • Hast du durch das Pulver abgenommen?
    Nein, ich habe nicht abgenommen. Das war auch nicht Sinn und Zweck der Sache. Ein Tagesbeutel der Pulver hat jeweils ca. 2200kcal. Um mit dem Pulver abzunehmen, müsste man schon die kalorienreduzierte Version von Bertrand zu sich nehmen. Die hat ca. 1800kcal pro Beutel.
  • Fühlst du dich anders als vorher?
    Ich hätte ja erwartet, dass ich mich irgendwie fitter oder schlaffer oder irgendwas fühle. Aber das ist nicht der Fall. Ich fühle mich eigentlich wie eh und je. Ich bin auch nicht plötzlich zur Sportskanone mutiert oder so etwas.
  • Ernährst du dich nun anders als vorher?
    Abgesehen vom Trinken des Pulvers ernähre ich mich eigentlich kaum anders. Wenn man allerdings morgens und mittags Pulver zu sich nimmt und dann abends einen Salat isst, bekommt man irgendwie das Gefühl, sich "nur noch" gesund zu ernähren. Das täuscht aber wahrscheinlich einfach nur.
  • Würdest du es anderen empfehlen?
    Man sollte es in meinen Augen einfach mal probiert haben. Vielleicht nicht gleich einen ganzen Monat lang, aber mal so eine Woche tut vielleicht ganz gut. Abgesehen davon kann ich jedem auch für die tägliche Ernährung Trinkkost empfehlen. Es ist lecker und gibt einem ein gutes Gefühl.
  • Wirst du es weiterhin nehmen?
    Eindeutig ja! Trinkkkost habe ich als Frühstück in meinen Alltag integriert. Das gibt mir ernährungstechnisch ein sehr gutes Gefühl. Ich lasse aber auch durchaus mal Mahlzeiten ausfallen. Bei Bertrand bin ich mir noch nicht so sicher. Ich kann es mir z.B. gut als Nahrung bei (Hacker-) Kongressen vorstellen, wo man ja sonst eher zu Restaurants und Imbissen greift. Nach einer Woche Kongress ist meine Verdauung jedenfalls typischerweise vollends hinüber. Das könnte mit Bertrand anders aussehen.

Das war es also, mein Experiment mit Vollnährpulver. Mir persönlich hat es einiges gebracht. Vielleicht fühlt sich ja der ein oder andere nun ermutigt, es auch einmal zu probieren. Die Erfahrung ist es in meinen Augen auf alle Fälle wert. 🙂

Pulverige Grüß, Kenny

Seite 2 von 87123...Letzte »