PHP Fatal error: Cannot redeclare Error() in ....
Hallo Leute, das ist jetzt ziemlich off-topic, aber ich kenne mich mit php sowas von überhaupt nicht aus.... Ich hoffe, irgendjemand von Euch ist ein apache/php Profi und kann mir helfen. Ich habe auf meinem Rechner (OS 12.2) seit Jahren das Paket "zoneminder" installiert. Hat immer super funktioniert. Blos, seit einiger Zeit (2-3 Wochen ?????) kann ich nicht mehr die dazugehörige Web-Applikation sterten. Wenn ich im Browser http://localhost/zm/index.php aufrufe, antwortet mir der Indianer mit einem HTTP-500 Fehler In /var/log/apaches/error_log steht dann die Zeile [Tue Mar 05 14:19:42 2013] [error] [client 127.0.0.1] PHP Fatal error: Cannot redeclare Error() in /srv/www/htdocs/zm/includes/logger.php on line 525 Und ich habe jetzt sowas von keine Ahnung wieso das plötzlich so ist. Vor wenigen Wochen hat noch alles bestens funktioniert. Das Einspielen irgend eines Updates dürfte dann etwas "zerstört" haben. Irgendwelche Tips zur Fehlersuche? Grüße, Norbert -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 05.03.2013 19:46, schrieb Norbert Zawodsky:
Wenn ich im Browser http://localhost/zm/index.php aufrufe, antwortet mir der Indianer mit einem HTTP-500 Fehler
In /var/log/apaches/error_log steht dann die Zeile
[Tue Mar 05 14:19:42 2013] [error] [client 127.0.0.1] PHP Fatal error: Cannot redeclare Error() in /srv/www/htdocs/zm/includes/logger.php on line 525
Vermutlich wird das File logger.php mehrfach eingebunden. Evtl. findest du ja die Stelle an der das File eingebunden wird. grep -r "logger.php" könnte da helfen. Falls es mit include eingebunden wird machst du einfach ein require_once aus dem include. Allerdings sollte so was nicht passieren. Ich würde das Paket entfernen und neu installieren. gruß Ingo -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 05.03.2013 22:39, schrieb I.H.:
Am 05.03.2013 19:46, schrieb Norbert Zawodsky:
Wenn ich im Browser http://localhost/zm/index.php aufrufe, antwortet mir der Indianer mit einem HTTP-500 Fehler
In /var/log/apaches/error_log steht dann die Zeile
[Tue Mar 05 14:19:42 2013] [error] [client 127.0.0.1] PHP Fatal error: Cannot redeclare Error() in /srv/www/htdocs/zm/includes/logger.php on line 525
Vermutlich wird das File logger.php mehrfach eingebunden. Evtl. findest du ja die Stelle an der das File eingebunden wird. grep -r "logger.php" könnte da helfen. Falls es mit include eingebunden wird machst du einfach ein require_once aus dem include. Allerdings sollte so was nicht passieren. Ich würde das Paket entfernen und neu installieren. gruß Ingo
Hi Ingo! Ein grep nach "logger.php" ergab genau einen Treffer: index.php:require_once( 'includes/logger.php' ); Ich habe auch das Paket zoneminder bereits mit Yast "zwangsweise aktualisiert" Hat nichts geändert. Im zm-Forum habe ich die Frage auch schon gestellt. Mein Post dort hat 20 Views aber 0 replies .... Und vorallem habe ich zm sicher seit Monaten nicht mehr aktualisert. Das letzte Mal als die Version 1.25 veröffentlicht wurde. Und das ist IIRC schon länger her. Ich habe also den Verdacht dass irgend ein anderes update etwas zerstört hat. Aber was???? wo ???? Auf dem selben server habe ich auch den phpMyAdmin installiert. Den verwende ich täglich und der funktioniert bestens... Bin ratlos. Gruß Norbert -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 06.03.2013 10:48, schrieb Norbert Zawodsky:
Am 05.03.2013 22:39, schrieb I.H.:
Am 05.03.2013 19:46, schrieb Norbert Zawodsky:
Wenn ich im Browser http://localhost/zm/index.php aufrufe, antwortet mir der Indianer mit einem HTTP-500 Fehler
In /var/log/apaches/error_log steht dann die Zeile
[Tue Mar 05 14:19:42 2013] [error] [client 127.0.0.1] PHP Fatal error: Cannot redeclare Error() in /srv/www/htdocs/zm/includes/logger.php on line 525
Vermutlich wird das File logger.php mehrfach eingebunden. Evtl. findest du ja die Stelle an der das File eingebunden wird. grep -r "logger.php" könnte da helfen. Falls es mit include eingebunden wird machst du einfach ein require_once aus dem include. Allerdings sollte so was nicht passieren. Ich würde das Paket entfernen und neu installieren. gruß Ingo
Ein grep nach "logger.php" ergab genau einen Treffer:
index.php:require_once( 'includes/logger.php' );
Ich habe auch das Paket zoneminder bereits mit Yast "zwangsweise aktualisiert" Hat nichts geändert. Hast du es mal komplette gelöscht und neu installiert und am besten noch geprüft ob auch wirklich alle Dateien unter /srv/www/htdocs/zm/ gelöscht sind? Ich kenne die Software ja nicht evtl. musst du noch deine Config sichern. Das requirce_once ist auch OK daran kann es also nicht liegen. Kannst du mal die Zeile 525 aus der logger.php hier posten. Oder schicke mir die Datei mal zu.
gruß Ingo -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 06.03.2013 17:38, schrieb I.H.:
Am 06.03.2013 10:48, schrieb Norbert Zawodsky:
Am 05.03.2013 22:39, schrieb I.H.:
Am 05.03.2013 19:46, schrieb Norbert Zawodsky:
Wenn ich im Browser http://localhost/zm/index.php aufrufe, antwortet mir der Indianer mit einem HTTP-500 Fehler
In /var/log/apaches/error_log steht dann die Zeile
[Tue Mar 05 14:19:42 2013] [error] [client 127.0.0.1] PHP Fatal error: Cannot redeclare Error() in /srv/www/htdocs/zm/includes/logger.php on line 525
Vermutlich wird das File logger.php mehrfach eingebunden. Evtl. findest du ja die Stelle an der das File eingebunden wird. grep -r "logger.php" könnte da helfen. Falls es mit include eingebunden wird machst du einfach ein require_once aus dem include. Allerdings sollte so was nicht passieren. Ich würde das Paket entfernen und neu installieren. gruß Ingo
Ein grep nach "logger.php" ergab genau einen Treffer:
index.php:require_once( 'includes/logger.php' );
Ich habe auch das Paket zoneminder bereits mit Yast "zwangsweise aktualisiert" Hat nichts geändert. Hast du es mal komplette gelöscht und neu installiert und am besten noch geprüft ob auch wirklich alle Dateien unter /srv/www/htdocs/zm/ gelöscht sind? Ich kenne die Software ja nicht evtl. musst du noch deine Config sichern. Das requirce_once ist auch OK daran kann es also nicht liegen. Kannst du mal die Zeile 525 aus der logger.php hier posten. Oder schicke mir die Datei mal zu.
gruß Ingo
Ich habe jetzt versuchsweise /srv/www/htdocs/zm auf /srv/www/htdocs/zm.hide umbenannt. Danach habe ich das Paket mit Yast neu installiert. Leider keine Änderung. Der Fehler kommt wieder. Irgendwie bestätigt das mein Gefühl dass es gar nichts mit dem zm Paket zu tun hat, sondern dass das Problem irgendwo anders seinen Ursprung hat. Was passiert eigentlich genau wenn man im Browser ein index.php aufruft? Wasmacht der Apache am anderen Ende der Leitung im Detail? Soll / darf ich dir die Datei logger.php als pm schicken? Gruß, Norbert -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 06.03.2013 10:48, schrieb Norbert Zawodsky:
Am 05.03.2013 22:39, schrieb I.H.:
Am 05.03.2013 19:46, schrieb Norbert Zawodsky:
Wenn ich im Browser http://localhost/zm/index.php aufrufe, antwortet mir der Indianer mit einem HTTP-500 Fehler
In /var/log/apaches/error_log steht dann die Zeile
[Tue Mar 05 14:19:42 2013] [error] [client 127.0.0.1] PHP Fatal error: Cannot redeclare Error() in /srv/www/htdocs/zm/includes/logger.php on line 525
Vermutlich wird das File logger.php mehrfach eingebunden. Evtl. findest du ja die Stelle an der das File eingebunden wird. grep -r "logger.php" könnte da helfen. Falls es mit include eingebunden wird machst du einfach ein require_once aus dem include. Allerdings sollte so was nicht passieren. Ich würde das Paket entfernen und neu installieren. gruß Ingo
Hi Ingo!
Ein grep nach "logger.php" ergab genau einen Treffer:
index.php:require_once( 'includes/logger.php' );
Ich habe auch das Paket zoneminder bereits mit Yast "zwangsweise aktualisiert" Hat nichts geändert.
Im zm-Forum habe ich die Frage auch schon gestellt. Mein Post dort hat 20 Views aber 0 replies ....
Und vorallem habe ich zm sicher seit Monaten nicht mehr aktualisert. Das letzte Mal als die Version 1.25 veröffentlicht wurde. Und das ist IIRC schon länger her. Ich habe also den Verdacht dass irgend ein anderes update etwas zerstört hat. Aber was???? wo ????
Auf dem selben server habe ich auch den phpMyAdmin installiert. Den verwende ich täglich und der funktioniert bestens...
Bin ratlos.
Gruß Norbert
Hi, wenn Error() dort redeklariert wird, aber logger.php nicht mehrfach eingebunden ist, würde ich darauf tippen, dass irgendwas vor dem require_once neuerdings Error() auch deklariert, entweder ein neues Modul oder ein vorhandenes nutzt neuerdings diese Funktion... Ich würde also bei index.php meine Suche starten und gucken ob dort oder in einem vorher includeten Modul die Funktion Error() deklariert wird. Es gibt eine php-Funktion function_exists(), die das auch zur Laufzeit prüfen kann, einfach nach jedem include-Befehl wieder aufrufen, etwa so: if (function_exists('Error') die('hier isse'); else echo 'hier isse nich'; ... BTW: Funktionsnamen sind IMHO in php _case insensitive_, so dass die Funktion wohl auch error() heißen kann... cu jth -- www.teddylinx.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 07.03.2013 12:50, schrieb Joerg Thuemmler:
if (function_exists('Error') die('hier isse'); else echo 'hier isse nich'; HA !!! Treffer, versenkt ! (wie vhier vor kurzem jemand so trefflich bemerkte)
Ich habe obiges Statement als *aller erstes* Statement in die index.php eingebaut. Und kaum rufe ich die index.php im Browser auf, schon steht geschrieben "hier isse" Mein Bauchgefühlt hatte recht. Bevor index.ph überhaupt dran kommt ist Error() bereits deklariert. Und wie finde ich jetzt WO Error() deklariert wird ????? Ein rekursives grep übers gesamte filesystem nach "function Error(" ??? -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 07.03.2013 16:39, schrieb Norbert Zawodsky:
Am 07.03.2013 12:50, schrieb Joerg Thuemmler:
if (function_exists('Error') die('hier isse'); else echo 'hier isse nich'; HA !!! Treffer, versenkt ! (wie vhier vor kurzem jemand so trefflich bemerkte)
Ich habe obiges Statement als *aller erstes* Statement in die index.php eingebaut.
Und kaum rufe ich die index.php im Browser auf, schon steht geschrieben "hier isse"
Mein Bauchgefühlt hatte recht. Bevor index.ph überhaupt dran kommt ist Error() bereits deklariert.
Und wie finde ich jetzt WO Error() deklariert wird ????? Ein rekursives grep übers gesamte filesystem nach "function Error(" ???
Hi, das ist aber merkwürdig... zumindest bei meinem php (5.3.5.) ist Error() nicht deklariert und ich kann es problemlos deklarieren. Was passiert denn, wenn Du eine ganz einfache index.php an den apachen verfütterst, so etwa <html><body> <h2>TEST</h2> <?php function Error() { echo "Error is da"; } Error(); ?> </body></hmtl> und was passiert, wenn Du auf der Console php index.php (für die zm-index.php) eingibst? (Sollte jede Menge Fehler wg. fehlender Module etc. geben, aber keine Syntaxfehler und nicht den declare-Fehler) cu jth -- www.teddylinx.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 08.03.2013 10:30, schrieb Joerg Thuemmler:
Am 07.03.2013 16:39, schrieb Norbert Zawodsky:
Am 07.03.2013 12:50, schrieb Joerg Thuemmler:
if (function_exists('Error') die('hier isse'); else echo 'hier isse nich'; HA !!! Treffer, versenkt ! (wie vhier vor kurzem jemand so trefflich bemerkte)
Ich habe obiges Statement als *aller erstes* Statement in die index.php eingebaut.
Und kaum rufe ich die index.php im Browser auf, schon steht geschrieben "hier isse"
Mein Bauchgefühlt hatte recht. Bevor index.ph überhaupt dran kommt ist Error() bereits deklariert.
Und wie finde ich jetzt WO Error() deklariert wird ????? Ein rekursives grep übers gesamte filesystem nach "function Error(" ???
Hi,
das ist aber merkwürdig... zumindest bei meinem php (5.3.5.) ist Error() nicht deklariert und ich kann es problemlos deklarieren.
Was passiert denn, wenn Du eine ganz einfache index.php an den apachen verfütterst, so etwa
<html><body> <h2>TEST</h2> <?php function Error() { echo "Error is da"; } Error(); ?> </body></hmtl>
und was passiert, wenn Du auf der Console
php index.php
(für die zm-index.php) eingibst? (Sollte jede Menge Fehler wg. fehlender Module etc. geben, aber keine Syntaxfehler und nicht den declare-Fehler)
cu jth
Hi Jürgen, ich habe Deine simple routine von oben mit copy/paste in eine datei /srv/www/htdocstest.php kopiert. Rufe ich dann localhost/test.php im Browser auf kommt der bekannte HTTP-500 error. In apache's error:_log steht PHP Fatal error: Cannot redeclare Error() in /srv/www/htdocs/test.php on line 6 dann habe ich in der Konsole mal "php test.php" eingegeben. Da kam dann ein interessantes Warning (und danach der bekannte Fehler): rincewind:/srv/www/htdocs # php test.php PHP Warning: Module 'kolabformat' already loaded in Unknown on line 0 PHP Fatal error: Cannot redeclare Error() in /srv/www/htdocs/test.php on line 6 rincewind:/srv/www/htdocs # Was ist dieses "kolabformat" und vorallem "already loaded in Unknown" ?????? Hmmmm.... Dubios Norbert -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 08.03.2013 10:30, schrieb Joerg Thuemmler:
Am 07.03.2013 16:39, schrieb Norbert Zawodsky:
Am 07.03.2013 12:50, schrieb Joerg Thuemmler:
if (function_exists('Error') die('hier isse'); else echo 'hier isse nich'; HA !!! Treffer, versenkt ! (wie vhier vor kurzem jemand so trefflich bemerkte)
Ich habe obiges Statement als *aller erstes* Statement in die index.php eingebaut.
Und kaum rufe ich die index.php im Browser auf, schon steht geschrieben "hier isse"
Mein Bauchgefühlt hatte recht. Bevor index.ph überhaupt dran kommt ist Error() bereits deklariert.
Und wie finde ich jetzt WO Error() deklariert wird ????? Ein rekursives grep übers gesamte filesystem nach "function Error(" ???
Hi,
das ist aber merkwürdig... zumindest bei meinem php (5.3.5.) ist Error() nicht deklariert und ich kann es problemlos deklarieren.
Was passiert denn, wenn Du eine ganz einfache index.php an den apachen verfütterst, so etwa
<html><body> <h2>TEST</h2> <?php function Error() { echo "Error is da"; } Error(); ?> </body></hmtl>
und was passiert, wenn Du auf der Console
php index.php
(für die zm-index.php) eingibst? (Sollte jede Menge Fehler wg. fehlender Module etc. geben, aber keine Syntaxfehler und nicht den declare-Fehler)
cu jth
Ich komme der Sache immer näher: rincewind:/srv/www/htdocs # php --rf Error PHP Warning: Module 'kolabformat' already loaded in Unknown on line 0 Function [ internal:kolabformat function error ] { } rincewind:/srv/www/htdocs # Offenbar ist da ein modul geladen in welchem Error() deklariert ist. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Norbert Zawodsky [08.03.2013 11:30]:
Ich komme der Sache immer näher:
rincewind:/srv/www/htdocs # php --rf Error PHP Warning: Module 'kolabformat' already loaded in Unknown on line 0 Function [ internal:kolabformat function error ] { }
rincewind:/srv/www/htdocs #
Offenbar ist da ein modul geladen in welchem Error() deklariert ist.
Das Modul 'kolabformat' müsste Dir phpinfo() Dir dann anzeigen, meint Werner - -- -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iEYEARECAAYFAlE5v40ACgkQk33Krq8b42OyFgCfRkVXrbM2O+Pxpm+bEl+sIu1q YUIAmwXUs5EMXaqs+CJa68G8Kk9OvVJy =m5fc -----END PGP SIGNATURE----- -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 08.03.2013 11:38, schrieb Werner Flamme:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Norbert Zawodsky [08.03.2013 11:30]:
Ich komme der Sache immer näher:
rincewind:/srv/www/htdocs # php --rf Error PHP Warning: Module 'kolabformat' already loaded in Unknown on line 0 Function [ internal:kolabformat function error ] { }
rincewind:/srv/www/htdocs #
Offenbar ist da ein modul geladen in welchem Error() deklariert ist.
Das Modul 'kolabformat' müsste Dir phpinfo() Dir dann anzeigen, meint Werner - -- -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iEYEARECAAYFAlE5v40ACgkQk33Krq8b42OyFgCfRkVXrbM2O+Pxpm+bEl+sIu1q YUIAmwXUs5EMXaqs+CJa68G8Kk9OvVJy =m5fc -----END PGP SIGNATURE----- Ich habs gelöst / gefunden:
Das "schuldige" Paket heisst php-libkolab0 und enthält die PHP Bindings for libkolab libkolab wiederum wird von kdepim-runtime benötigt. Ich habe php-libkolab0 entfernt und schon funktioniert wieder alles. Ob das "sauber und so gedacht" ist, bleibt im Raum stehen... -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 08.03.2013 12:01, schrieb Norbert Zawodsky:
Am 08.03.2013 11:38, schrieb Werner Flamme:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Norbert Zawodsky [08.03.2013 11:30]:
Ich komme der Sache immer näher:
rincewind:/srv/www/htdocs # php --rf Error PHP Warning: Module 'kolabformat' already loaded in Unknown on line 0 Function [ internal:kolabformat function error ] { }
rincewind:/srv/www/htdocs #
Offenbar ist da ein modul geladen in welchem Error() deklariert ist.
Das Modul 'kolabformat' müsste Dir phpinfo() Dir dann anzeigen, meint Werner - -- -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iEYEARECAAYFAlE5v40ACgkQk33Krq8b42OyFgCfRkVXrbM2O+Pxpm+bEl+sIu1q YUIAmwXUs5EMXaqs+CJa68G8Kk9OvVJy =m5fc -----END PGP SIGNATURE----- Ich habs gelöst / gefunden:
Das "schuldige" Paket heisst php-libkolab0 und enthält die PHP Bindings for libkolab
libkolab wiederum wird von kdepim-runtime benötigt.
Ich habe php-libkolab0 entfernt und schon funktioniert wieder alles.
Ob das "sauber und so gedacht" ist, bleibt im Raum stehen...
KDE mal wieder... man glaubt gar nicht, wo das Zeug alles auftauchen kann... ich weiß schon, warum ich mich davon fernhalte libkolab0 ... kommt bestimmt von "kollabieren" ;-) cu jth -- www.teddylinx.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (4)
-
I.H.
-
Joerg Thuemmler
-
Norbert Zawodsky
-
Werner Flamme