Discussion:
"Cannot redeclare" bei neuer PHP Installation
(zu alt für eine Antwort)
Rainer Wahl
2009-10-31 21:18:08 UTC
Permalink
Kürzlich habe ich mein System mit Win7 Prof. 64Bit neu installiert. Im Zuge
dieser Neuinstallation nahm ich die Chance gleich beim Schopfe, auch Apache
HTTP, PHP und MySQL neu zu installieren. Auf graue Haare war ich dabei
schon vorbereitet. Man kennt ja seine Pappenheimer..

Anfänglich lief hier einmal Apache 2.0.55 (jetzt 2.2), PHP 5.2.4 (jetzt
5.3.0). Meine Homepage residiert hier lokal unter c:\web und in einem
Unterverzeichnis darin eine weitere Homepage. Alles lief seit Jahren so wie
es soll (ganz, ganz am Anfang war einmal PHP 4.x installiert).

Jetzt mit der neuen Installation meldet mir PHP plötzlich:

Fatal error: Cannot redeclare quoted_printable_encode() in
C:\web\functions.php on line 15

Kommentiere ich diese Fkt. aus, hagelt es andere Fehlermeldungen und nichts
sieht aus wie es soll. Ein E_All hatte ich auch vorher schon drin usw.,
damit der Code so sauber wie möglich läuft und auch Ungereimtheiten
gemeldet werden (und von mir ausgebügelt werden können), auch wenn es auf
dem Server im Netz auch so schon läuft.

Die functions.php binde ich BTW über require ein. Auch ein ändern in
require_once ändert nichts an der Fehlermeldung. Vorher bekam ich diese
Fehlermeldung wie gesagt noch nie zu Gesicht - oder verhält sich die 5.3
soviel anders als die 5.2 von PHP?

Da es sich hier wie gesagt um eine Neuinstallation handelt, vermute ich
"nur" ein Konfigurationsproblem, weiß aber im moment nicht, wo ich ansetzen
soll. Hat irgendjemand einen Tipp für mich, wo ich anfangen sollte zu
suchen oder was ich ändern kann?
--
Airbrush FAQ: http://www.r-wahl.de/airbrush/faq.php
Baubericht ME-109 RC-Flugmodell:
http://www.r-wahl.de/modellbau/me-109/me-109.php
Carsten Wiedmann
2009-10-31 21:42:07 UTC
Permalink
Post by Rainer Wahl
Anfänglich lief hier einmal Apache 2.0.55 (jetzt 2.2), PHP 5.2.4 (jetzt
5.3.0).
Fatal error: Cannot redeclare quoted_printable_encode() in
C:\web\functions.php on line 15
In PHP < 5.3.0 gab es noch keine Funktion quoted_printable_encode() (siehe
PHP Manual [1]), weshalb du dir eine eigene mit diesem Namen anlegen
konntest. Jetzt wo es so eine Funktion gibt, kannst du keine eigene mit
diesem Namen haben.
Post by Rainer Wahl
oder verhält sich die 5.3 soviel anders als die 5.2 von PHP?
Siehe PHP-Manual [2].

Gruß
Carsten

[1] http://www.php.net/manual/en/function.quoted-printable-encode.php
[2] http://www.php.net/manual/en/migration53.php
Thomas Hochstein
2009-11-01 07:29:49 UTC
Permalink
Post by Carsten Wiedmann
In PHP < 5.3.0 gab es noch keine Funktion quoted_printable_encode() (siehe
PHP Manual [1]), weshalb du dir eine eigene mit diesem Namen anlegen
konntest. Jetzt wo es so eine Funktion gibt, kannst du keine eigene mit
diesem Namen haben.
Die Abhilfe ist dementsprechend nicht, die eine Zeile
auszukommentieren, sondern die Funktion überall umzubenennen (also die
Funktionsdefinition und dann natürlich auch jeden Aufruf dieser
Funktion).

-thh
Niels Braczek
2009-11-01 14:12:57 UTC
Permalink
Post by Thomas Hochstein
Post by Carsten Wiedmann
In PHP < 5.3.0 gab es noch keine Funktion quoted_printable_encode()
Die Abhilfe ist dementsprechend nicht, die eine Zeile
auszukommentieren, sondern die Funktion überall umzubenennen (also die
Funktionsdefinition und dann natürlich auch jeden Aufruf dieser
Funktion).
Die Lösung liegt vielmahr darin, die Funktion nur zu deklarieren, wenn
sie gebraucht wird:

if ( !function_exists( 'quoted_printable_encode' ) ) {
function quoted_printable_encode(...)
{
...
}
}

Voraussetzung dafür ist, dass Signatur und Verhalten der eigenen und der
eingebauten Funktion identisch sind - was bei diesem Funktionsnamen
allerdings anzunehmen ist.

MfG
Niels
--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · e-Commerce · Joomla! Content Management |
------------------------------------------------------------------
Thomas Hochstein
2009-11-01 19:15:43 UTC
Permalink
Post by Niels Braczek
Die Lösung liegt vielmahr darin, die Funktion nur zu deklarieren, wenn
[...]

Noch besser, ja. Danke!
Rainer Wahl
2009-11-02 14:11:12 UTC
Permalink
Post by Carsten Wiedmann
In PHP < 5.3.0 gab es noch keine Funktion quoted_printable_encode() (siehe
PHP Manual [1]), weshalb du dir eine eigene mit diesem Namen anlegen
konntest. Jetzt wo es so eine Funktion gibt, kannst du keine eigene mit
diesem Namen haben.
Argl! =8-/
OK, das erklärt alles. Danke!
--
Airbrush FAQ: http://www.r-wahl.de/airbrush/faq.php
Baubericht ME-109 RC-Flugmodell:
http://www.r-wahl.de/modellbau/me-109/me-109.php
Loading...