Seite 1 von 1

Installation Contenido & PHP 5.3

Verfasst: Do 17. Sep 2009, 14:24
von Oldperl
Soderle, ich hab mir da mal ein paar Gedanken, na nicht nur Gedanken, zu den Problemen rund um PHP 5.3 und Contenido gemacht.
Wer nicht so auf dem Laufenden ist lese sich den folgenden Thread durch
:arrow: http://forum.contenido.org/viewtopic.php?f=63&t=24032

EDIT 05.04.2010:
Da es weiterhin Anfragen zu Contenido unter PHP >= 5.3 gibt, hänge ich hier mal den momentanen Stand der Änderungen zur conlib an. Dies ist eine Beta und ich empfehle daher nicht den Einsatz in produktiven Umgebungen.
conlib_beta.zip
Beta für die conlib-Dateien.
Der Einsatz in Produktivumgebungen wird nicht empfohlen.
(64.63 KiB) 490-mal heruntergeladen
Für Rückmeldungen sowohl von weiteren Bugs, aber auch wenn alles funktioniert, wären wir sehr dankbar! :-)

Bevor ihr nun eine Installation von Contenido mit dieser PHP-Version macht, solltet ihr folgende Änderungen durchführen, die zwar nicht alle Probleme beseitigen, aber zumindest dafür sorgen, das ihr mit Contenido unter PHP 5.3 arbeiten könnt. Solltet Ihr danach weitere Fehlermeldungen in Contenido oder im Errorlog erhalten, so bitte ich diese hier zu Posten, damit das gefixt werden kann.

1. E_DEPRECATED
PHP 5.3 führt neue Errorlevel ein (E_DEPRECATED und E_USER_DEPRECATED). Dadurch, und durch als deprecated gekennzeichnete PHP-Funktionen (z.B. alle ereg-Funktionen), kommt es zu einem Wust an Fehlermeldungen in Contenido. Hier wäre sicherlich eine grundsätzliche Abschaltung dieser Meldungen während einer Übergangsphase sinnvoller gewesen (in der php.ini).
Da ein Austausch aller als deprecated gekennzeichneten Funktionen sehr aufwendig ist und daher gewiss noch einige Zeit in Anspruch nehmen wird, habe ich vorerst eine, auch abwärtskompatible, Lösung durch Änderung der Fehleranzeige in der contenido/includes/config.misc.php für euch.

Bitte in dieser Datei folgende Zeilen

Code: Alles auswählen

/* Report all errors except warnings */
error_reporting (E_ALL ^E_NOTICE);
ersetzen durch

Code: Alles auswählen

/* Report all errors except warnings */
/* fix for E_DEPRECATED using PHP >= 5.3 (Author: O. Pinke)*/
if (version_compare(PHP_VERSION, '5.3.0', '<')) {
    error_reporting (E_ALL ^E_NOTICE);
} else {
    error_reporting (E_ALL ^E_NOTICE ^E_DEPRECATED);
}
Dies kann man auch bereits vor einem PHP-Upgrade machen, durch die Abfrage der PHP-Version greift die Änderung erst bei einem Upgrade.

2. PHPLib
Das die PHPLib schon etwas betagt ist, ist hinlänglich bekannt. Sicherlich wäre ein modernerer Abstraktionslayer wünschenswert, jedoch wäre auch das mit einem unverhältnismäßigem Aufwand verbunden, da doch sehr oft im Core ganz speziell auf die PHPLib zugegriffen wird und nicht nur eine neue DB-Abstraktion dies berücksichtigen müßte, oder man alle DB-Abfragen im Core prüfen und anpassen müßte.
Daher habe ich (zumindest) begonnen, Änderungen an der PHPLib einzuarbeiten, um diese so nach und nach fit für PHP >= 5.3 zu machen.
Bisher geänderte Dateien habe ich als conlib.zip angehängt. Bitte diese einfach ins Verzeichnis conlib kopieren.


Weiterhin habe ich eine Datei php53_ereg_todo.txt mit ins Archiv gepackt, die eine Liste aller von mir gefundenen Stellen der ereg-Funktionen beinhaltet. Hier könnte ich ein bisschen Unterstützung gebrauchen beim "Übersetzen" in preg-Funktionen.
Irgendwo ein RegEx-Profi da draussen? :wink:

Ok, soweit erst mal, bitte alle Infos rund um Contenido und PHP >= 5.3 hier in diesem Thread sammeln, danke. :-)

Gruß aus Franken

Ortwin

Quellen:
Deprecated features in PHP 5.3.x (php.net)

Re: Installation Contenido & PHP 5.3

Verfasst: Do 17. Sep 2009, 15:05
von thepoet
Ich habe mir grade mal die ereg(i)-Liste durchgeschaut, und au den ersten Blick sollte es damit getan sein, den Aufruf durch preg_match zu ersetzen, die Patterns in Schrägstriche zu packen und für eregi() noch den 'i'-Modifier anzuhängen. U.a. in der include.rights_menu.php hast du ein paar False Positives (preg_match( '/ereg/i', "setWhereGroup") === TRUE). Ein grep mit '\beregi?[ _(]' wär genauer. Ich habe das mal über eine jungfräuliche 4.8.12er drüberlaufen lassen, da bleiben noch 100 Treffer übrig:
eregi.zip
(2.17 KiB) 417-mal heruntergeladen

Re: Installation Contenido & PHP 5.3

Verfasst: Do 17. Sep 2009, 15:18
von Dodger77
Ein paar der Fundstellen könnten auch statt der preg- durch Stringfunktionen (str_replace(), str_ireplace(), strpos(), stripos()) ersetzt werden. Das sollte performanter sein.

Re: Installation Contenido & PHP 5.3

Verfasst: Do 17. Sep 2009, 16:16
von thepoet
Jupp, da sind mir ein paar untergekommen. Ich hab mal ganz quick&dirty ein Perl Skript die Änderungen machen lassen, vielleicht mag mal jemand drüberschaun. Ein paar Fundstellen (class.datatype.datetime.php und conlib/session.inc) sind noch nicht drin.
eregi_fixed.zip
(2.82 KiB) 459-mal heruntergeladen

Re: Installation Contenido & PHP 5.3

Verfasst: Mi 11. Nov 2009, 09:06
von McHubi
Ähm...

...habe jetzt die Änderungen von Oldperl durchgeführt. - Dumme Frage zum Perl Skript: wie funzt das denn? - Duckundweg...

Re: Installation Contenido & PHP 5.3

Verfasst: Mi 11. Nov 2009, 15:08
von ehenk
wow!

Vielen Dank!

Ich habe mich schon dusselig gesucht :roll:

Jetzt kann ich weitermachen!

Viele Grüße ehenk!!

Re: Installation Contenido & PHP 5.3

Verfasst: Mo 5. Apr 2010, 11:08
von Oldperl
Ich habe mal aktuelle Beta-Dateien der conlib im 1. Post angehängt.
Bitte nicht in produktiven Umgebungen einsetzen!
Auch übernehmen wir keinen Support für diese Version der conlib und der Einsatz erfolgt auf eigene Gefahr, daher bitte immer an Backup der DB denken.

Gruß aus Franken

Ortwin

Re: Installation Contenido & PHP 5.3

Verfasst: Mi 2. Jun 2010, 23:59
von Herogarma
Gibt es irgendwelche Bedenken, einfach auf PHP 5.2 zu downgraden, bis Contenido sich mit 5.3 angefreundet hat?

Re: Installation Contenido & PHP 5.3

Verfasst: Do 3. Jun 2010, 10:54
von Oldperl
Hallo Herogarma,

grundsätzlich gibt es da keinerlei Bedenken, Contenido läuft unter PHP 5.2.
Alternativ kannst du ja auch einmal die 4.8.13 RC2 testen. :arrow: http://forum.contenido.org/viewtopic.php?f=25&p=144654

Gruß aus Franken

Ortwin

Re: Installation Contenido & PHP 5.3

Verfasst: Do 3. Jun 2010, 11:01
von Herogarma
Das ist für mich leider keine Alternative, weil ich lokal dieses Problem SUSE 11.2 / PHP 5.3 habe und hier die Applikationen entwickle. Das schiebe ich dann auf die Webserver der Kunden, auf denen in der Regel 5.2 läuft.

Re: Installation Contenido & PHP 5.3

Verfasst: So 29. Aug 2010, 15:51
von Oldperl
Mit dem Release der Version 4.8.13 sollte sich dieser Thread vorerst erledigt haben.

Daher mach ich hier mal dicht, lass den Thread aber noch ein paar Tage gepinnt als Info.

Gruß aus Franken

Ortwin