Notice: Use of undefined ...

Notice: Use of undefined ...

am 03.09.2006 20:05:00 von Dietmar Segbert

Hallo,

ich habe auf meinem Rechner einen lokalen Server eingerichtet, der auch
nur lokal laufen soll.
Die PHP Version ist 5.1.x (Slackware 10.2 Testing).

Bei verschiedenen php-scripten myphppim, dadabik ... bekomme ich immer
wieder Fehlermeldungen

notice: use of undefined constant ...

Die Konstante ist z. B. in einerconfig-inc.php oder config.inc wie folgt
deklariert

$config[login] = "loginname";

Laut php-faq sollte aber die Konstante so aussehen:

$config["login"] = "loginname";

Auch bei der Installation von egroupware tauchten obige Fehlermeldungen
auf.

Kann man php denn nicht so konfigurieren, dass die erste Definition von
Konstanten aktzeptiert wird? Ich meine nicht die Anpassung des
Errorlevels.

Vielen Dank für Eure Hilfe, ich bin Anfänger und ziemlich fustriert, den
ich suche und möchte nur ein barrierefreies Adressbuch und einen
Terminkalender installieren.

MFG.
Dietmar
..

Re: Notice: Use of undefined ...

am 03.09.2006 20:30:32 von Gregor Kofler

Dietmar Segbert meinte:
> Hallo,
>
> ich habe auf meinem Rechner einen lokalen Server eingerichtet, der auch
> nur lokal laufen soll.
> Die PHP Version ist 5.1.x (Slackware 10.2 Testing).
>
> Bei verschiedenen php-scripten myphppim, dadabik ... bekomme ich immer
> wieder Fehlermeldungen
>
> notice: use of undefined constant ...
>
> Die Konstante ist z. B. in einerconfig-inc.php oder config.inc wie folgt
> deklariert

> $config[login] = "loginname";

$config ist ein Variable. Die Konstante wird irgendwo anders definiert
und heisst "login".

> Laut php-faq sollte aber die Konstante so aussehen:
>
> $config["login"] = "loginname";

Da ist auch keine Konstante drin. Dem Array $config wird unter dem
Schlüssel "login" der String "loginname" zugeordnet.

> Auch bei der Installation von egroupware tauchten obige Fehlermeldungen
> auf.

Eben lausig und schlampig gescripted.

> Kann man php denn nicht so konfigurieren, dass die erste Definition von
> Konstanten aktzeptiert wird?

Die einzige Konstante dort wäre "login". Die ist aber eben nicht
definiert; PHP nimmt an, dass "login", also ein String gemeint ist -
deshalb laufen die Skripten wahrscheinlich erst. Abhilfe: ~E_NOTICE im
Errorreporting. Oder aus $config[login] $config["login"] machen (das
Skript *sollte* auch weiterhin funktionieren).

> Vielen Dank für Eure Hilfe, ich bin Anfänger und ziemlich fustriert,

Das Manual durchlesen könnte Erleichterung verschaffen.

> den
> ich suche und möchte nur ein barrierefreies Adressbuch und einen
> Terminkalender installieren.

Was hat das alles mit "barrierefrei" zu tun?

Gruß, Gregor


--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Re: Notice: Use of undefined ...

am 03.09.2006 22:01:24 von Ulf Kadner

Dietmar Segbert wrote:

> notice: use of undefined constant ...
>
> Die Konstante ist z. B. in einerconfig-inc.php oder config.inc wie folgt
> deklariert
>
> $config[login] = "loginname";

Typischer Anfängerfehler! Alle Scripte die derartig fehlerhaftenen Code
enthalten, sollten niemals zur Anwendung kommen! Weder lokal noch im
Web. Du weist nie was Dir der Ersteller der Anwendung noch so alles für
Sicherheitsprobleme mit seinem Wissen verschafft.

> Laut php-faq sollte aber die Konstante so aussehen:
>
> $config["login"] = "loginname";

Wie Gregor bereits schrieb: Das ist keine Konstante

Der Fehler liegt darin, das PHP annimmt das login eine Konstante ist
(also kein String 'login' oder "login")

Da diese Konstante aber niemals definiert wurde z.B. mit:

define('login', 'value');

bekommst Du Deine Notice. Darauf bezieht sich auch die FAQ

28.15. Notice: Use of undefined constant ...
http://www.php-faq.de/q/q-fehler-konstante.html


> Auch bei der Installation von egroupware tauchten obige Fehlermeldungen
> auf.

Dann solltest Du es gleich entsorgen.

> Vielen Dank für Eure Hilfe, ich bin Anfänger und ziemlich fustriert, den
> ich suche und möchte nur ein barrierefreies Adressbuch und einen
> Terminkalender installieren.

Barrierefreiheit hat mit PHP rein garnichts zu tun.

Guckst Du Wikipedia:
http://de.wikipedia.org/wiki/Barrierefreiheit

und FAQ:

2.1. Was ist PHP?
http://www.php-faq.de/q/q-php-was.html

MfG, Ulf

Re: Notice: Use of undefined ...

am 03.09.2006 22:28:13 von Matthias Esken

On 03 Sep 2006 20:05:00 +0200, Dietmar Segbert wrote:

> $config[login] = "loginname";
>
> Laut php-faq sollte aber die Konstante so aussehen:
>
> $config["login"] = "loginname";
>
> Kann man php denn nicht so konfigurieren, dass die erste Definition von
> Konstanten aktzeptiert wird? Ich meine nicht die Anpassung des
> Errorlevels.

Nein. Und das aus einem einfachen Grund. Das ist nämlich gar keine
Konstantendefinition!

Konstanten werden mit define() definiert. Im Handbuch findest du das
ziemlich weit vorne (http://www.php.net/manual/de/language.constants.php).


Was hier passiert ist folgendes:
PHP stößt auf $config[login]. login ist offensichtlich keine Variable.
login ist aber auf den ersten Blick auch kein String, da die
Anführungszeichen fehlen. Folglich muss login eine Konstante sein, die den
echten Key enthält der für den Zugriff auf das assoziative Array verwendet
werden soll. Folglich schaut PHP in seiner Liste der Konstanten nach und
findet ... nichts. Daraufhin geht PHP davon aus, dass der Code von einem
Deppen geschrieben wurde, der tatsächlich einen String meinte, aber
vergessen hat ihn zu setzen. Folglich wird die eigentlich korrekte Annahme,
login sei eine Konstante, wieder verworfen und stattdessen der String
"login" verwendet.


Du könntest jetzt das error_reporting runterschrauben, damit PHP dich nicht
mehr davon informiert, dass da eigentlich fehlerhafter Code ist und das
Programm deshalb ein paar Ehrenrunden drehen muss. Es war aber noch nie
eine gute Idee, Compilerwarnungen einfach zu ignorieren, statt das Problem
zu beseitigen. Du klebst ja auch nicht im Auto die rote Warnlampe zu wenn
das Öl alle ist, sondern füllst Öl nach.

Gruß,
Matthias

Re: Notice: Use of undefined ...

am 04.09.2006 12:05:00 von Dietmar Segbert

Hallo,

zunächst vielen Dank für Eure Tips. Ich werde mir mal ein gutes Manual zum
Nachschlagen besorgen.

Was barrierefrei ist, ist mir schon klar, denn ich bin nur mit lynx sowie
Braillezeile und Sprachausgabe in den großen Weiten des Internet
unterwegs.

Welche Adressdatenbank, welchen Terminkalender und welches Tagebuch, das
sich als Haushaltsbuch nutzen lässt, würdet Ihr denn vorschlagen?

- gut zu bedienen mit lynx, Braillezeile u. Sprache
- leicht installierbar

Ach ja, eine Datenbankanwendung, mit der ich Dokumente, How-Tos, die ich
zu Installationszwecken etc. gesammelt habe, einordnen kann, wäre auch
nicht schlecht.

Viele Grüße

Dietmar