Ilch Fehlermeldung

Hi,
Habe grade Ilch installiert und im Header bekomme ich diese Fehlermeldung:

Deprecated: Assigning the return value of new by reference is deprecated in /users/as4y/www/include/includes/class/xajax.inc.php on line 10

Deprecated: Assigning the return value of new by reference is deprecated in /users/as4y/www/include/includes/class/xajax.inc.php on line 68

Deprecated: Assigning the return value of new by reference is deprecated in /users/as4y/www/include/includes/class/xajax.inc.php on line 95

Deprecated: Assigning the return value of new by reference is deprecated in /users/as4y/www/include/includes/class/xajax.inc.php on line 101

Deprecated: Assigning the return value of new by reference is deprecated in /users/as4y/www/include/includes/class/xajax.inc.php on line 124

Deprecated: Assigning the return value of new by reference is deprecated in /users/as4y/www/include/includes/class/xajax.inc.php on line 162

Deprecated: Assigning the return value of new by reference is deprecated in /users/as4y/www/include/includes/class/xajax.inc.php on line 238

Deprecated: Assigning the return value of new by reference is deprecated in /users/as4y/www/include/includes/class/xajax.inc.php on line 396

Warning: Cannot modify header information - headers already sent by (output started at /users/as4y/www/include/includes/class/xajax.inc.php:10) in /users/as4y/www/include/includes/class/design.php on 

Ich hab kein Plan woran das liegen könnte… :whata:

Weiß niemand wie ich das löse?

Du solltest solche Fragen direkt im Forum des Programmierers fragen (sofern es existiert).

Und versuche erst, wie man eine Problembeschreibung schreibt.
Wie soll ich dir helfen, wenn ich gar nicht weiß, was Ilch ist? (Link zur Downloadseite, Version, etc…)

Aber “headers already sent” bedeutet, dass bereits eine Ausgabe stattgefunden hat:
(Daten inkl. Header-Informationen werden zum Browser gesendet, bevor ein Skript noch vollständig ausgeführt wurde.)

Beispiel:

[code]<?php

echo “Hallo”;
header(‘Location: index.php’); // Man wird nicht weitergeleitet, da bereits eine Ausgabe stattgefunden hat.

?>[/code]

Lösen kann man das so:

[code]<?php

ob_start(); // Cache wird gestartet. Benötigt ein bisschen mehr Arbeitsspeicher, aber das Skript wird meistens schneller ausgeführt.

echo “Hallo”;
header(‘Location: index.php’); // Man wird noch nicht weitergeleitet.

ob_end_flush(); // Genau jetzt werden Daten an den Browser geschickt, und man wird weitergeleitet.

?>[/code]

Es könnte sein, dass du eine Ausgabe vor dem include(_once)/require(_once)-Befehl ausführst.

Tipp: Schreibe am Anfang der Datei “include/includes/class/design.php”

und am Ende

Vielleicht hilft das ja weiter. Wenn du mehr Informationen geben würdest, hätte ich dir besser geholfen.

Das dürfte hier aber uninteressant sein - es ist die letzte Meldung in der Liste, und deshalb ist die Wahrscheinlichkeit sehr hoch, dass dieser Fehler überhaupt nur deshalb aufgetreten ist, weil die vorherigen Warnmeldungen eben auch Ausgaben darstellen. Ursache vorheriger Meldungen beseitigen = auch dieser Fehler dürfte wieder verschwunden sein.

output_buffering stellt in diesem Falle also keine brauchbare “Lösung” dar.

Im vorliegenden Falle müssten vermutlich nur wieder mal die &-Zeichen in den betreffenden Zeilen entfernt werden:

return & new SomeObject(); // falsch - unter aktuellen PHP-Versionen nicht mehr erlaubt return new SomeObject(); // korrekt; da es sich um ein Objekt handelt, wird dieses sowieso per reference übergeben

Oder man nimmt einfach E_DEPRECATED aus dem aktuellen error_level raus. Das behebt zwar nicht den Fehler, unterdrückt aber die Meldung, und es funktioniert vorerst weiterhin wie vorher auch. (Wird man dann aber vermutlich spätestens wenn PHP 6 kommt, doch anpassen müssen. Aber bis dahin hat das hoffentlich der Ersteller des Scriptes bereits gemacht.)