[ erweiterte Suche ]

»PHP constant: Nicht gesetzt, obwohl definiert

Wirklich alle Whitespaces entfernen (auf eins reduzieren)Neues Thema eröffnenNeue Antwort erstellenDas Thema einem Freund empfehlenDas Thema druckenflock() Alternative mkdir() optimiert
Seite 1 von 1 [2 Beiträge]
AutorNachricht
Administrator 


Name: Marc
Geschlecht:
Anmeldedatum: 28.08.2004
Beiträge: 40818
Chats: 11134
Wohnort: Hennef


Meine eBay-Auktionen:
20.10.2011, 13:08


Hallo,

ich habe einen ganz komischen Fehler, den ich nicht nachvollziehen kann. Im Fall von 1:100.000.000 passiert es, dass eine Konstante nicht gesetzt wird, obwohl sie im Scriptverlauf 100%-tig definiert wurde.

Herausgefunden habe ich das, weil ich eine Konstante in einer MySQL-Abfrage einsetze und diese resultiert einen Fehler, wenn die Konstante als reiner String reingepackt wird:
   Code:
WHERE t.forum_id NOT IN(RESTRICTED_ACCESS_FORUM_IDS)


Die Definition ist in einer Datei in der auch die Datenbankklasse inkludiert wird. D.h. ohne die Datei käme es gar nicht zur Ausführung der MySQL Abfrage und entsprechend muss es sich dabei um einen Fehler in PHP handeln. Ich habe die Definition in der letzten Zeile dieser Datei:
   Code:
// constants
define('RESTRICTED_ACCESS_FORUM_IDS', '17,19,20,26,27,47,49,50,52,53,55,79,94,258,351,423,487,496,546,829,997,1030,1152,1168,1253,1255,1257,1259,1262,1264,1268,1274,1276,1278');
?>


Ich werde jetzt testweise die Position ändern. Mal sehen ob es immer noch passiert, aber da es wirklich so selten ist, kann ich keine verbindlichen Aussagen dazu treffen. Vielleicht ist es auch ein Fehler im RAM oder sowas. Ich weiß nicht wie die Struktur von PHP aufgebaut ist, um ein Setzen zu verifizieren.

In jedem Fall sollte man sich nicht 100%-tig darauf verlassen, dass eine Konstante auch wirklich da ist.

Unsere Version: 5.3.3-1ubuntu9.5

Gruß

Verfasst am: 20.10.2011, 20:31

Ich bin der Sache auf die Spur gekommen. Es ist doch kein Fehler in PHP.

Der Fehler passierte, weil ein Update an einer Datei durchgeführt wurde, die selbst included wird. Während dem Upload auf das Live-Environment gingen schon Zugriffe ein und manche davon griffen auf eine partielle includete Datei zu und damit fehlten die letzten Zeilen dieser Datei wo die Konstante gesetzt wurde.

Das ganze habe ich jetzt umgangen in dem ich den gesamten Code in eine Bedingung gepackt habe:
   Code:
if (1) {
   // hier der code
}


PHP bricht nämlich nicht ab, wenn "?>" fehlt, sondern nur, wenn ein eingeklammerter Bereich bzw. ein Kommentar nicht beendet wurde. Es besteht also kein Problem, wenn die includete Datei nur eine Funktion oder Klasse enthält. Resultat wäre also ein 500er Serverfehler und damit sind wir dann auf der sicheren Seite.

Das sollte einem zu denken geben. Denn es könnte sein, dass während dem Upload nur eine leere Datei included wird (weil der Upload gerade erst begonnen hat). Ist zwar nur eine Millisekunde, aber solche Dinge sollte man bedenken, falls es sicherheitsrelevante Variablen gibt.

Das beste ist natürlich die Dateien nur dann zu aktualisieren, wenn keine Zugriffe eingehen.

Gruß

Zuletzt bearbeitet von mgutt am 20.10.2011, 20:34, insgesamt einmal bearbeitet
Nach obenprofil pn email
Gast 

20.10.2011, 20:31


Mach mit!

Wenn Dir die Beiträge gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:

    » Anmelden

Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...
Nach oben
Seite 1 von 1 [2 Beiträge]
Neues Thema eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:HitsLetzter Beitrag
Paypal: Abbuchung geht, obwohl Konto nicht bestätigt?!
Hi, ich habe meine Kontoverbindung geändert. Jetzt hatte ich in Paypal die Bankverbindung hinterlegt und festgestellt, dass ich noch etwas Guthaben drauf hatte. Also habe ich den Überweisungsauftrag erteilt und es ist mittlerweile angekommen. Ist...
von mgutt
147102.11.2011, 14:20
mgutt
Hilfe mein Honda Bali will nicht Starten obwohl er alles hat
Hallo, Habe einen Honda Bali sj 50,habe jetzt das problem das er nicht anspringen will obwohl er neue kerze,sprit und CDI drin sind??? Er versucht ja zu starten aber passiert nix??? :wall: Wer kann mir dabei mal helfen,da ich leider keine ahnung...
von baerchen_78
150830.03.2011, 20:40
bootzi
Suchen Php Programmierer (Cake Php)
Wir suchen einen Php Programmierer, da unser letzter abgesprungen ist. Guter Umgang mit Cake Php ist nötig. Momentan geht es nur darum, eine Website fertig zu stellen, aber wenn dies erfolgreich abgeschlossen ist, können viele Folgeaufträge...
[Jobs & Stellenangebote]von Moritur
037911.11.2009, 17:06
Moritur
Toten hinters Steuer gesetzt (Kölnische Rundschau)
Toten hinters Steuer gesetzt Erstellt 09.02.09, 11:21h, aktualisiert 09.02.09, 17:35h Mit einem makabren Trick hat ein Autofahrer versucht seine Schuld an einem schweren Unfall auf der A44 bei Aachen zu vertuschen. Er legte seinen sterbenden...
Seite 2von Mattes
1141822.02.2009, 13:14
Xaric2k
Cookie wird bei FF3 und IE doppelt gesetzt
Ich kann mir das aktuell nicht erklären, aber manchmal können sich die Nutzer nicht einloggen, weil bereits ein Cookie vorhanden ist. Ein Mitglied habe ich dann um einen Screenshot gebeten und der zeigte das: Es ist also so, dass ein Cookie zwei...
[PHP]von mgutt
130105.01.2009, 23:56
mgutt
Fernlicht ein, obwohl ausgeschaltet
Hey ihr, ich fahre nen EC8 und habe seit kurzen das Problem, dass mein Fernlicht an ist, wenn ich das Abblendlicht einschalte. Wenn ich Lichthupe gebe oder das Fernlicht einschalte ändert sich nichts, außer dass an der Amatur bzw im Display die Leuchte...
von BruceGi
47331.08.2011, 20:00
lak33
Euro 2 Umrüstung obwohl Baujahr 1991?
Wußte leider nicht wie ich die Überschrift besser formulieren sollte. Also mein EG4 ist Erstzulassung 11/91. Ich würde ihn gerne auf Euro2 umrüsten, habe jedoch nichts gefunden. KLR habe ich für den EG4 überhaupt keinen gefunden, und die ABE der...
von pythonzimmer
47031.05.2009, 13:19
pythonzimmer
PN weg, obwohl noch 1 neue PN angezeigt wird ?????
Hab eben ne neue PN bekommen, hab dann auf " Du hast 1 neue PN " geklickt, aber die neue Nachricht ist nicht zu sehen. Wo ist die...
Seite 2von DarkAngel1977
1633320.04.2012, 09:28
Tornado47
HD-Telefonie obwohl beide ISDN und Fritz!Box haben?!
Hier kann man lesen wie die Voraussetzungen für HD Telefonie sind: http://service.avm.de/support/de/SKB/FRITZ-Box-7390/323:Voraussetzungen-fuer-HD-Telefonie HD-Telefonie (High Definition) ermöglicht Telefongespräche in einem neuen, natürlichen Klang....
von mgutt
45018.04.2012, 13:50
mgutt
LED Leuchtmittel/Lampe blitzt obwohl Licht ausgeschaltet ist
Hi, ich habe im Badezimmer gerade eine neue Lampe mit 4 LED Leuchtmitteln installiert. Die sind von Osram und heißen "Parathom PAR16 GU10" und haben jeweils 5 Watt. Nun schalte ich das Licht aus und einige der LEDs blitzen fröhlich...
Seite 2von mgutt
15276230.10.2010, 18:18
mgutt
© 2004 - 2012 www.programmierer-forum.de (srv02) | Communities | Impressum