» PHP constant: Nicht gesetzt, obwohl definiert

Wirklich alle Whitespaces entfernen (auf eins reduzieren)Neuen Thread eröffnenNeue Antwort erstellenVerlinkung abgrenzen funktioniert nicht
AutorNachricht
Administrator 

Name: Marc
Geschlecht:
Anmeldedatum: 28.08.2004
Beiträge: 52420
Wohnort: Lohmar


Meine eBay-Auktionen:
20.10.2011, 13:08
zitieren

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:
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:
// 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
zitieren

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:
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ß

 1x  bearbeitet
pn email
Gast 
20.10.2011, 20:31
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "PHP constant: Nicht gesetzt, obwohl definiert" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns 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...


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter 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
1
3.423
02.11.2011, 14:20
mgutt
prelude bb6 startet nicht obwohl alle kontrolleuchten gehn
Hello , Eine frage so mein prelude wen n ich zündschloss drehe leuchtet alles auf aber sobald ich den in start stellung drehe pasiert nix . Wdnn ich den anlasser brücke springt er sofort an . Ivh weis jetz nicht ob das auch am zündschloss liegt weil...
von LudeH22
1
359
14.11.2012, 23:40
vtec_paule
Gegenverkehr geblendet: Sie blendeten nicht rechtzeitig ab, obwohl Fahrzeuge entgegenkamen
Hi, wieder mal eine lustige Story meinerseits: Ich fahre recht spät nach Hause und bin gerade auf der Autobahn unterwegs. Irgendwann erscheint vor mir die Polizei, die ich recht gemächlich überhole (ca. 10 km/ schneller). Plötzlich setzen sie...
von mgutt
30
1.972
12.07.2012, 06:50
PummelG40
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
1
2.335
30.03.2011, 20:40
bootzi
Beifahrertür lässt sich nicht öffnen, obwohl das "Aufschließen" funktioniert
Mal wieder eine Fragestellung an all die Mechaniker... Seani's Beifahrertür lässt sich aufschließen (innen klappt es auch um) aber die Tür will sich nicht öffnen lassen. (Und nein: wir haben hier in Hamburg noch keinen Frost! - Wenn es soweit ist,...
von Maila25
3
266
13.12.2019, 12:40
Lutti
Kategorie "Vorlagen" wird im Artikel angezeigt,obwohl nicht verlinkt...
Hallo liebe Mediawiki-User! Bin seit heute neu hier, da ich nach einem Forum geschaut habe, wo man auch mal Probleme ansprechen kann. Ich hoffe ich beschreibe mein Problem gut genug, das man sich das auch vorstellen kann. Ich habe letzte Woche mit...
von Buggyboy
0
162
25.04.2017, 07:08
Buggyboy
Ölverbrauch auf 1000 km wie definiert
Man sagt ein Integra DC2 darf maximal 1Liter Öl auf 1000 km verbrauchen, jedoch wie wird das genau definiert? Übertrieben gesagt kann ich die 1000 km nur auf der Autobahn zurück legen und demnach dann locker 1 Liter Öl verbrennen wenn ich nur im Vtec...
von Donjuan
7
402
19.06.2016, 10:04
Donjuan
wo wurde nochmal die Kopfzeile definiert
Moin ! vor längerer Zeit habe ich einmal in unser Wiki einen Text integriert der in jeder Seite eingeblendet wird. Nun möchte ich diesen wieder rausnehmen. Aber wo war das nochmal???? Kann mir einer von Euch weiterhelfen? Gruß...
von jan99
1
36
24.08.2018, 21:00
Stebi
Meine Ls etwas in Szene gesetzt
So hab es endlich mal geschaft meine Ls vor die Verkleidung zu holen und das sieht dann so aus. Erstmal die Ringe vorab mal an die Verkleidung geschraubt und dann ab ins Auto ...
von DanielSD
20
767
14.09.2014, 13:25
Tobi002
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
1
594
05.01.2009, 23:56
mgutt
© 2004 - 2024 www.programmierer-forum.de | Communities | Impressum |