PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Archive for the ‘PHP’ Category

Den aktuellen Stand von PHP 7 (pre-alpha) selbst kompilieren und testen

with one comment

PHP 7 wird kommen, nach aktuellem Plan wird es Mitte Oktober 2015 soweit sein. Ich persönlich bin da noch etwas skeptisch ob das zeitlich klappen kann, aber ich hoffe dass es noch 2015 sein wird.

PHP 7 wird sehr große interne Änderungen an der Zend Engine mit sich bringen, die Performance wird ungefähr verdoppelt und dann auf dem Niveau von HHVM sein. Aber auch der Arbeitsspeicherbedarf wird radikal reduziert. Genau um letzteres zu prüfen habe ich den aktuellen PHP 7-Stand selbst kompiliert, und möchte hier zeigen dass es sehr einfach geht und ihr das auch machen solltet!

Wir werden PHP 7 aka phpng direkt aus dem GIT-Repository holen und kompilieren, folgende Schritte sind dazu nötig:

cd /tmp/
git clone https://github.com/php/php-src.git
cd php-src
./buildconf
./configure --prefix=/usr/local/phpng --with-zlib --with-config-file-path=/usr/local/phpng/etc --enable-mbstring --with-mysql --with-mysqli --with-pdo-mysql --enable-zip --with-imap --with-kerberos --with-imap-ssl --with-openssl --with-jpeg-dir --with-gd --with-gettext --with-freetype-dir --enable-ftp --with-pspell --with-curl
make
make test

Falls es Fehler beim configure bzgl. re2c oder bison gibt, unter Ubuntu installiert man diese folgendermaßen:

sudo apt-get install bison
sudo apt-get install re2c

Falls pspell nicht gefunden werden kann:

configure: error: Cannot find pspell
sudo apt-get install libpspell-dev

Nach dem „make test“ ist PHP 7 auf Kommandozeilenebene nutzbar:

$ sapi/cli/php -v
PHP 7.0.0-dev (cli) (built: Jan 20 2015 23:13:58)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies

Wer PHP danach richtig installieren möchte macht noch ein „sudo make install“, dann wird PHP im oben definierten Prefix-Verzeichnis installiert.

Ich bin mir sehr sicher dass ich Mitte des Jahres, wenn es die ersten Alpha- und Beta-Versionen gibt, ausgiebig Applikationen testen werde, damit möglichst wenige Bugs in PHP 7 drin sind, und es hoffentlich bereits Ende 2015 auf Produktionsmaschinen einsetzbar sein wird. Ich sage schonmal voraus dass ich dann breit grinsend vor den Maschinen hocken werde und die neuen schnellen Webseiten und Scripte bewundern werde 😉

Im nächsten Blogartikel geht es um meinen kleinen Vergleich des Memory-Verbrauchs.

Written by Michael Kliewe

Januar 21st, 2015 at 12:54 pm

Posted in PHP

Tagged with , , , ,

Wer nutzt die ungewöhnlichen PHP-Tags?

with 23 comments

Vorgestern begann eine interessante Diskussion inklusive eines RFC in der PHP-Internals-Mailingliste, in der es um die Abschaffung zweier alter und selten genutzter Möglichkeiten geht, PHP-Code als solchen zu markieren. Normalerweise beginnt PHP-Code mit <?php oder <?

Es gibt aber weitere Möglichkeiten für diesen Einsatzzweck:

<script language="php">
    echo 'Hallo';
</script>

<% echo 'Hallo'; %>

php_tagsNun ist die Frage: Soll bzw. kann man diese alternativen Tags aus der PHP-Engine entfernen? Ein Gegenargument wäre dass durch die Entfernung plötzlich der PHP-Quelltext an den Browser ausgegeben würde, ein Besucher der Webseite würde also den möglicherweise geheimen Sourcecode mit Passwörtern usw. zu Gesicht bekommen. Ist das eine reelle Gefahr die die Abschaffung für immer oder mindestens lange Zeit verhindert? Oder betrifft das nur ein paar hundert weltweit genutzte kleine Webseiten, auf die man keine Rücksicht nehmen kann?

Welche Vorteile hätte eine Entfernung, bringt es neben dem verringerten PHP-Engine-Code auch kleine Performancevorteile oder ähnliches?

In welcher Version sollte man diese Tags als DEPRECATED markieren, um so die Admins auf die nahende Entfernung hinzuweisen? Wie viele Admins oder Programmierer bekommen die DEPRECATED-Meldungen im Error-Log überhaupt mit?

Wer von euch nutzt diese ungewöhnlichen Methoden in seinem Code oder hat ihn bereits in Fremdcode oder Bibliotheken gesehen? Ich muss zugeben dass ich von den beiden Möglichkeiten in den letzten 10 Jahren nichts gehört habe und nicht wußte dass sie existieren, und sie demnach auch noch nie irgendwo gesehen habe…

Written by Michael Kliewe

September 12th, 2014 at 11:37 am

Posted in PHP

Tagged with , ,

PHP 5.6.0 released! Neue Funktionen

with 6 comments

Vor ziemlich genau einer Stunde ist PHP 5.6 final erschienen, und es ist Zeit sich die neuen Features und Vorteile anzuschauen. Aus meiner Sicht lohnt ein Upgrade, allein schon wegen der geschenkten 10% Performance gegenüber PHP 5.5.

Die neue Version kann auf der Downloads-Seite von php.net heruntergeladen werden. Die neuen Features sind die folgenden:
Weiterlesen »

Written by Michael Kliewe

August 28th, 2014 at 3:44 pm

Posted in PHP

Tagged with , ,

PHP 5.6.0 RC4 erschienen: Bitte testen!

with 4 comments

Gerade eben ist der vierte (und letzte?) Release-Candidate von PHP 5.6.0 erschienen: PHP 5.6.0 RC4. Damit wir ein möglichst stabiles und fehlerfreies PHP haben auf allen Systemen ist jeder aufgerufen, die Testsuite durchlaufen zu lassen. Das geht sehr schnell und ohne viel Aufwand:

wget http://downloads.php.net/tyrael/php-5.6.0RC4.tar.gz
tar -xzvf php-5.6.0RC4.tar.gz
cd php-5.6.0RC4
./configure --prefix=/usr/local/php5.6.0rc4 --with-zlib --with-config-file-path=/usr/local/php5.6.0rc4/etc --enable-mbstring --enable-zip --with-imap --with-kerberos --with-imap-ssl --with-openssl --with-jpeg-dir --with-gd --with-gettext --with-freetype-dir
make
make test

Der configure Aufruf ist nur ein Beispiel, ihr müßt natürlich dort die Extensions und Optionen nehmen die eure PHP-Installation benötigt, also wahrscheinlich mit Apache-Anbindung (–with-apxs2) usw.

Solltet ihr den folgenden Fehler bekommen:

configure: error: xml2-config not found. Please check your libxml2 installation.

behebt ihr das einfach mit der Installation des libxml2-dev Pakets:

sudo apt-get install libxml2-dev

Am Ende des Durchlaufs der über 10.000 Tests erhaltet ihr dann das Ergebnis, entweder es gab Fehler oder es gab keine. Im ersten Fall könnt ihr den Fehlerbericht direkt an das QA-Team schicken indem ihr Y drückt und eure E-Mail-Adresse eingebt zwecks eventueller Rückfragen. Eine Liste aller fehlgeschlagenen Tests von allen Testern gibt es auf qa.php.net.

Danach kann das Verzeichnis einfach wieder gelöscht werden. Oder noch besser auf einem Testsystem mittels

sudo make install

richtig installieren und eure Applikation testen! Aber passt auf dass ihr dadurch nicht eine laufende PHP-Installation überschreibt und zerstört. Bis zum „make test“ macht ihr nichts kaputt.

Danke!

Written by Michael Kliewe

August 15th, 2014 at 11:38 am

Posted in PHP

Tagged with , ,

Gewinner der 6 Abos (PHP-Magazin und Entwickler-Magazin)

without comments

Ich habe soeben die 6 Abos ausgelost, die aus der Verlosung von vorletzter Woche stammen. 3 Mal das PHP-Magazin und 3 Mal das Entwickler-Magazin, für jeweils 1 Jahr. Insgesamt haben 25 Kommentare an der Verlosung teilgenommen, 18 Mal für das PHP-Magazin und 8 Mal für das Entwickler-Magazin. An diesen Zahlen sieht man schon dass einer für beides gleichzeitig teilgenommen hat, was ja nicht erlaubt war. Den musste ich streichen.
Ich musste außerdem einen Kommentar, der doppelt vorkam, entfernen (es lag anscheinend an technischen Problemen da der Text fast identisch ist, da wollte keiner betrügen nehme ich an).

Und hier sind die Gewinner:

Weiterlesen »

Written by Michael Kliewe

August 5th, 2014 at 12:11 am