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
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.)