All posts tagged “PHP”

Horde-Framework patchen

Um das Horde Framework auf den neusten Stand zu bringen, muss man nicht zwingend alle Dateien austauschen. Das Horde Project bietet für Updates auf die jeweiligen aktuellen Versionen auch Patches an.

Den passenden Patch für die jeweilige Horde Application (oder das Framework selber) findet man auf dem ftp des Horde Projects in den Ordnern "patches" und die Installation ist ein Kinderspiel. Einfach den jeweiligen Patch in das entsprechenden Verzeichnis kopieren, via gunzip entpacken und dann die Sourcen patchen.

Hier mal ein Beispiel für ein Update des Frameworks auf eine neue Version:

cd /root/www/horde (horde installdir)
wget ftp.horde.org/pub/horde/patches/patch-horde-3.0.6-3.0.7.gz
gunzip patch-horde-3.0.6-3.0.7.gz
patch -p1 < patch-horde-3.0.6-3.0.7
cd po
make

Sollte es vorkommen, das man einen größeren Versionssprung patchen muss (z.B. von Version 3.0.4 auf 3.0.7), dann einfach die entsprechenden Patches herunterladen und nacheinander patchen, funzt auch anstandslos :) 

PHP 5.1.0 und Horde

Man sollte sich nie darauf verlassen, das nach einem Update noch alles läuft wie es soll. Ein gutes Beispiel ist hier das PHP Framework HORDE. Nach dem Update auf PHP 5.1 sprangen mir schon beim Aufruf der Login Seite ein halbes Dutzend Fehlermeldungen in der Richtung

Only variable references should be returned by reference in /…/share/pear/Log.php on line 128

entgegen. Ein Update der Horde- bzw. IMP-Files auf die aktuellen Versionsnummern brachte leider auch keine Abhilfe. Anscheinend ist dieser "Bug", sofern man denn es Bug nennen kann, ein tiefer sitzendes Problem im Horde-Framework und man kann es lediglich beheben, in dem man in der php.ini die Fehleranzeige ausstellt und Errors ab sofort ins Syslog oder eine andere LogFile verbannt.

display_errors = Off
log_errors = On
;error_log = syslog ; goes to NT event log on NT-based machines
error_log = /var/log/php_error

Zugegeben, auf einem Produktion-Web sollten sowieso keine Fehlermeldungen für den Enduser sichtbar sein. Dieser "Bug" im HORDE-Framework ist also ein gute Grund, PHP Fehlermeldungen endlich ins Syslog (bzw. andere Logfile) zu verbannen :)

PHP 5.1.0 und IMAP

Ups, da wollte ich gerade mal meine PHP Version (inkl. Hardened-PHP-Patch) auf den neusten Stand bringen, da motzt PHP schon beim configure und schmeißt mir den Fehler

configure: error: Cannot find rfc822.h. Please check your c-client installation

entgegen. IMAP (Courier) ist eigentlich installiert und unter PHP 5.0.4 gab´s nen Fehler dieser Art nicht. Die File rfc822.h gehört, laut Google zu den IMAP-Bibliotheken, die anscheinend nicht mehr da sind (wieso auch immer). Folgendes löst das Problem dann allerdings auch so schnell wie es aufgetaucht ist:

wget ftp.cac.washington.edu/imap/imap-2005.DEV.tar.Z

make slx (oder make lsu für SUSE)
cp c-client/c-client.a /usr/local/lib/libc-client.a
cp c-client/rfc822.h /usr/local/include/
cp c-client/mail.h /usr/local/include/
cp c-client/linkage.h /usr/local/include/

Und schon klappt die Installation wie gewohnt.

Update
Wo ich schon mal dabei bin, hab ich auch gleich MySQL auf den neusten Stand gebracht (von 5.0.13 auf 5.0.16). Dank RPM-Installation gab es dort allerdings keine Probleme ;)

Hardening-Patch v0.4.6 released

Das Hardened-PHP-Projekt hat die Version 0.4.6 des Hardened-PHP-Patch veröffentlicht. Neben diversen Updates und   Fehlerbereinigungen sichert der neue Patch nun auch das Session-Handling.

Der Hardening Patch v0.4.6 steht ab sofort als reiner Patch gegen die offiziellen PHP-Quelltexte oder als fertiges Quelltext-Paket (PHP + Patch) zum Download für die PHP-Versionen 5.1.0, 5.0.5 und 4.4.1 zur Verfügung. Alle Änderungen gibt es wie immer im ChangeLog

[via webhostingblog]

PHP 5.1.0 released

php.gifHeute wurde auf php.net die Version 5.1.0 der Open-Source-Skriptsprache PHP veröffentlicht.

Neben einige wichtigen BugFixes gehört wohl die Datenbankabstraktionsschicht PHP Data Objects (PDO) zu den augenscheinlich interessantesten Neuigkeiten.

Aber auch in Punkto Geschwindigkeit hat die neue PHP Version durch eine beschleunigte Ausführungseinheit (Zend Engine II) einiges gewonnen. Weiterhin wurde das PCRE-Moduls für Perl-kompatible reguläre Ausdrücke auf Version 6.2 und die PHP-Funktionsbibliothek PEAR auf die Version 1.4.5 geupdated.

Alle Änderungen kann man wie immer im ChangeLog finden. PHP 5.1 steht im Quellcode und als vorkompiliertes Windows-Binary auf den Servern des PHP-Teams zum Download bereit.

Update
Wer Probleme beim Upgrade hat, sollte sich mal die Upgrade-Guide auf php.net anschauen. Hier werden mögliche Fehlerursachen und deren Lösung beim Wechsel von PHP 4.X auf die neue Version beschrieben.

Lottozahlengenerator

Alle Jubeljahre stehe ich vor dem gleichen Problem: Welche Zahlen soll ich auf meinen Lottoschein schreiben? Damit die Qual ein Ende hat, hab ich einen kleinen Lottozahlengenerator in php geschrieben. Dieser genertiert automatisch einen kompletten Schein, wobei eine Zahl nur max. zweimal auf einem generierten Schein vorkommen kann.

Wer mag, kann sich das Script auch herunterladen und weiterverbraten oder z.B. die Zahlen der letzten Lotto-Ziehung eintragen so das diese automatisch nicht in der aktuellen Ziehung vorkommen :)

Sicherheitslücken in PHP

php.gifGleich drei Sicherheitslücke in der Scriptsprache PHP hat das Hardened-PHP Projekt entdeckt.

Eine Lücke betrifft die Funktion phpinfo(), die durch eingeschleusten HTML-Code dazu gebracht werden kann z.B. Domain-Cookies auszulesen.

Eine weitere Schwachstelle betrift dabei den Datei-Upload unter PHP. Hier besteht die Möglichkeit, das bei einem Dateiupload das $GLOBALS-Array teilweise überschrieben wird und so Schadenscode in das System eingeschleust werden kann.

Eine weiter Schwachstelle findet sich in der Funktion parse_str(). Wird diese Funktion mit nur einem Argument aufrufen, kann PHP vorübergehend in den Zustand register_globals=on versetzt werden, auch wenn dieses in der php.ini mit register_globals=off ausgeschaltet wurde.

Betroffen sind alle PHP-Versionen bis einschließlich  4.4.0 und 5.0.5. Zwar wird nur der Upload-Bug als kritisch betrachtet, Benutzer der 4er Version sollen aber dennoch umgehend auf die Version 4.4.1 wechseln. Für die 5er existiert zur Zeit leider noch keine aktualisierte Version.

SWAT

logo.pngUnd mal wieder etwas aus dem Bereich "für lau", dieses mal für die PHP Coder.

Mit SWAT hat silverorange einen Open-Source Toolkit auf Basis von PHP 5 veröffentlicht, der zum Einsatz in eigenen Projekten  gedacht ist.

Bislang enthält der Toolkit 21 vorgefertigte Bausteine wie z.B. Kalender, Farbwähler, Checkboxen, Paginierung, Listen, Tabellen und Navigationselemente.

PHP 5.1 RC3 released

Heute wurde der nächste Release Candidate der kommenden PHP Version 5.1 veröffentlicht und somit ein weiterer Schritt in Richtung Final getätigt. Neben mehr Leistung wird die kommende Version der freien Script-Sprache auch eine native Datenbank-Abstraktionsschicht und PHP Data Objects (PDO) enthalten.

Der Release Candidate steht ab sofort auf den Servern von php.net zum Download bereit.

Auf der PHP-Group-Homepage ist allerdings noch nichts von dem neuen Release zu lesen. Dort wird weiterhin die RC1 als aktuellster Testkandidat angezeigt (oder ich bin einfach nur blind *sfg*)

[via Golem.de]

WordPress und php-5.0.5

Heute habe ich meinen Entwicklungs-Server mit der neuen php-Version 5.0.5 versorgt. WordPress paßte dieser Versionsupgrade allerdings gar nicht und erzeugte nur eine Fehlermeldung:

Fatal error: Only variables can be passed by reference in /www_root/d2k/wp-includes/gettext.php on line 66.

Das Problem scheint dabei die php-Funktion array_shift in der Funktion readint() zu sein. Tauscht man die Zeilen 66 und 69

66: return array_shift(unpack(‘V’, $this->STREAM->read(4)));

69: return array_shift(unpack(‘N’, $this->STREAM->read(4)));

durch

66: $tmp = unpack(‘V’, $this->STREAM->read(4));
67: return array_shift($tmp);

69: $tmp = unpack(‘N’, $this->STREAM->read(4));
70: return array_shift($tmp);

aus, läuft WP wieder anstandslos. Laut div. Postings aus anderen PHP-Projekten scheint dieses Problem nicht nur WordPress zu betreffen. Bei php.net habe ich dazu bislang allerdings nich nichts gefunden … was aber wohl eher an meinen knappen Zeit liegt als das dieses Problem nicht dort vielleicht schon besprochen wurde ;)