sokai.name Potsdam bloggt (wieder)

PHP und der BLOB

8. November 2011

An dieser Stelle soll es heute mal kurz um ein Problemchen und dessen ‚Lösung‘ gehen, welches mich gestern (fast) den ganzen Tag beschäftigt hat.

Ich hatte die Aufgabe zu lösen, mittels eines HTML-Formulars und PHP ein Bild (als BLOB) in einer MySQL-Datenbank abzulegen. – Eigentlich ja nicht allzu schwierig, denn Anleitungen & Code-Schnipsel dazu gibts im Netz wie „Sand am Meer“…

Am Ende entschied ich mich für die Variante, die hochgeladene Datei ohne file handler (fopen, fread, fclose) in die DB zu hexen. Denn man kann recht einfach mittels mittels der globalen PHP-Variable „$_FILES“ auf die (mittels POST) hochgeladene Datei zugreifen.

if (isset($_FILES[‘bild‘]) && is_uploaded_file($_FILES[‘bild‘][‘tmp_name‘]) && $_FILES[‘bild‘][’size‘] > 0) {
$mimetype = $_FILES[‘bild‘][‘type‘];
$blob = bin2hex(file_get_contents($_FILES[‘bild‘][‘tmp_name‘]));

Da ich beim Insert immer die Meldung bekam, dass ich einen Fehler in der SQL-Syntax habe, wenn ich für den BLOB mysql_real_escape_string(file_get_contents($_FILES['bild']['tmp_name'])) oder addslashes(file_get_contents($_FILES['bild']['tmp_name'])) (wie bspw. hier beschrieben) benutzt habe, habe ich letztlich die Funktion bin2hex() für das Speichern der binären Daten (des Bildes) in der MEDIUMBLOB-Spalte der DB verwendet.

Nach ein paar Test-Uploads stellte ich dann jedoch fest, dass größere Bilder nicht hochgeladen werden können – wg. der Begrenzung auf dem Server. Also habe ich etwas gesucht und die dafür zuständigen PHP-Einstellungen bzw. -Variablen gefunden. Diese spuckten mir allerdings aus, dass meine max. Upload-Größe 32MB beträgt, was bei einem Upload von einem ca. 1,5MB großen Bild jedoch nicht ’stimmte‘. Denn da kam dann dann die MySQL-Meldung „Got a packet bigger than ‚max_allowed_packet‘ bytes“ und der Datensatz wurde nicht in die DB geschrieben.

‚Gut, dass die MySQL-Meldung so aussagekräftig ist‘, dachte ich mir und suchte erneut nach einer Lösung… – Und siehe da, auch dazu gibt es Lösungen, wie bspw. diese. Ärgerlich war nur, dass ich den ganzen Tag der Meinung war, dass der MySQL-Parameter „max_allowed_packet“ dynamisch zur Laufzeit des Servers per PHP beeinflussbar ist. *gml*
Dies kam zum Beispiel auch daher, dass das Auslesen des Parameters (mit mysql_query("SHOW VARIABLES LIKE 'max_allowed_packet'")) und das Neusetzen des Wertes (mittels mysql_query("SET max_allowed_packet=16777216;")) zwar anstandslos funktionierte, aber leider den Upload nicht verbesserte. Trotz des neu gesetzten Wertes (auf 16MB), war die Uploadgrenze in Wirklichkeit immer noch beim Standardwert 1MB.

Lange Rede, kurze Erkenntnis:
Das Ändern des MySQL-Wertes „max_allowed_packet“ zur Laufzeit per PHP funktioniert (i.d.R.) nicht. (Man kann, wenn man MySQL-Root-Rechte mit seinem Login hat, versuchen, den globalen MySQL-Parameter zu verändern.)
Man muss/sollte/kann die Einstellung serverseitig vornehmen und entweder dauerhaft den Eintrag max_allowed_packet=16MB; in der my.cnf machen oder mit MySQL-Root-Rechten den Wert mittels SET max_allowed_packet=16777216; zur Laufzeit ändern (dann ist dieser bei einem Neustart allerdings wieder weg).

Außerdem ist anzumerken, dass die BLOBs in der DB irgendwie (ca.) doppelt so groß sind/werden, wie die Original-Dateien. – Aus einem Bild mit 991K wird bspw. (bei mir) ein BLOB mit 2.03MB. *strange&doof* (Bitte jetzt kein Bashing, ob es überhaupt sinnvoll ist, Bilder direkt in der DB zu speichern. – Es muss dieses Mal so sein!)

Ubuntu: Downgrade vom „proposed“-Repo

21. Oktober 2011

Schon seit einer Weile habe ich unter Ubuntu auf meinem EeePC das „proposed“-Repository installiert. Doch gerade nach meinem Upgrade zu Oneiric habe ich einige merkwürdige Erscheinungen, als deren Ursache ich eben dieses Repo in Verdacht habe. (Außerdem ist das „proposed“-Repo für ein Produktivsystem – auf dem also im Alltag alles funktionieren soll – wohl eh nicht gut)

Nun wollte ich einfach das „proposed“-Repo deaktivieren und mein System sozusagen (wieder auf den Standard) „deaktualisieren“. Aber irgendwie funktioniert das nicht so einfach…

Nach einigem Suchen habe ich dann einen funktionierenden Weg bei „Ask Ubuntu“ gefunden, den ich hier mal (auch für mich zum Merken) verlinke: „How can I revert back from an upgrade to the Proposed repository?“.

Noch ein kleiner Hinweis zu obigem Vorgehen: Bevor ihr die beiden Skripte durchlaufen lasst, deaktiviert das „proposed“-Repo nicht. Erst nachdem ihr euer System deaktualisiert habt, könnt ihr bspw. über die Software-Paketquellen-Verwaltung auf dem Reiter „Aktualisierungen“ den Haken beim Repo weg machen.

Viel Glück! :)

Die neun Debugging-Regeln

18. Oktober 2011

Ich habe sie schon ein paar Tage an meiner Wand hängen und wollte sie seit dem schon immer mal hier posten…

Die Regeln basieren auf dem Buch „Debugging“ von David J. Agans. Wer noch ein paar Details zu den einzelnen Regeln lesen möchte, der kann hier mal schauen.

Doch nun (endlich) die (Lebens)Weisheit:

  1. Understand the system
  2. Make it fail
  3. Quit thinking and look
  4. Divide and conquer
  5. Change one thing at a time
  6. Keep an audit trail
  7. Check the plug
  8. Get a fresh view
  9. If you didn’t fix it, it ain’t fixed

Skurriles & verrücktes Germanien

10. Mai 2011

Ja ich weiß, dass ich was für die FHP machen soll(te)…! Aber irgendwie lasse ich mich zu leicht ablenken – erst recht von solch merkwürdigen Spinnereien.

Angefangen hat es heute um 10.34 Uhr, als diese E-Mail vom crazy Maik eintrudelte. Da diese mit „freundlichen, germanischen Grüßen“ und dem Spruch „Staatsbürger des Deutschen Reiches mit unmittelbarer Reichsangehörigkeit gemäß Reichs- und Staatsangehörigkeitsgesetz (RuStAG) vom 22. Juli 1913“ abschloss, ging (irgendwie) bei mir sofort die Schubslade „Nazi“ auf.

Aber halt! Darf ich denn, ohne (Hintergrund-)Wissen, einfach so einen Mitbürger, mit nationaleren Ansichten als den meinen, einfach so verurteilen? Nein! Also schnell den Finger in die Ritze gesteckt, bevor die Schubslade ganz zu war und versucht, mich schlau(er) zu machen…

Und dann fing der Schlamassel an. – Schon vor einiger Zeit *dunkelerinner* hatte ich mal etwas von der „Kommissarische Reichsregierung“ (kurz KRR) gelesen – es könnte der Telepolis-Artikel „Reichlich ominös“ von 2001 gewesen sein, muss es aber nicht. Allerdings ist die Erinnerung daran fast Null und nur etwas nebulöses/rechts lastiges schwirrt seit dem zu diesem Thema durch meinen Kopf.
Als ich dann jedoch vorhin auf der Seite friedensvertrag.info (Link aus o.g. E-Mail) surfte, musste ich lauthals in mich hinein lachen (ich rede zwar laut mit mir selbst, lachen jedoch (noch) nicht, nur in Gesellschaft):

  • Schäferhunde (die im Grafikprogramm eher schlecht frei gestellt wurden),
  • Frakturschrift,
  • Familienbilder/-darstellungen, auf denen die blonde Mutti, ein sportiver Vati & zwei Kinderlein debil lächeln,
  • ein bolivianisches Impressum,
  • viel Geschwafel von „Reichsbürgern“ & „Reichsvolk“,
  • der Anschein einer Legitimation (von wem auch immer) & Richtigkeit der präsentierten Informationen,

Schlussendlich unterstützten dann auch noch die folgenden beiden Tatsachen meinen bis dato gemachten Eindruck, dass es sich bei dem ganzen Quatsch eher um Inhalte mit fäkalem Wert handelt:

  1. Bzgl. der Kontakt-Seite hat sich ein Tippfehler eingeschlichen, denn diese heißt „Konkakt“.
  2. Die präsenteste Person (mehrere Photos & respektvolle Erwähnung in mehreren Texten) ist „DR. Schittke Norbert“.

Und deshalb:
Lieber Maik, liebe „Exilregierung“ – ja, ihr lest richtig; aus der KRR ist mittlerweile durch eine „Gründung“, auf der leider „nur ein verschwindend geringer Teil des gesamtdeutschen Reichsvolkes erschienen“ war & deren Protokoll von 2004 auch noch so ein Lacher ist, eine vierköpfige „Exilregierung Deutsches Reich“ geworden!
Ich habe keine Ahnung von der Materie und es ist mir auch echt schnurz-egal. Ich finde es toll, wenn Traditionen gepflegt werden und Menschen bewusst mit Vergangenheit, Gegenwart & Zukunft umgehen. Auch müssen wir nicht gleicher Meinung sein. Aber das, was ihr macht ist echt Schwachsinn! Und den Mist dann auch noch (ganz nebenbei, bspw. in öffentlich archivierten E-Mails) rotz-frech zu verbreiten und damit evtl. auch noch Andere in euren Dunstkreis zu ziehen, finde ich voll panne – haut doch einfach ab!
Solltet ihr jedoch von dieser subversiven Scharlatanerie abrücken und eure Energie für wirklich wichtige Dinge einsetzen wollen, dann meldet euch mal (bei mir), denn dann können wir (vllt.; ich muss mir das nochmal überlegen…) auch mal reden.

Allen anderen (an diesem Müll interessierten) LeserInnen kann ich noch Links ans Herz legen (- auch wenn das Meiste schon etwas älter ist):

Und passend zu dieser ganzen Crazyness suche ich abschließend noch jemanden, der mit mir ASAP „Die Mondverschwörung“ in Berlin schaut oder das (wohl echt tolle) Filmchen nach Potsdam holt. [via]

PS.:
Sollte sich jmd. durch obige Worte, Links, Zitate etc. gekränkt, diskriminiert o.ä. fühlen – bzw. worden sein –, dann entschuldige ich mich vorab dafür und bitte um unverzüglichen Kontakt! – Jegliche Unterstellungen einer gewissen böswilligen Intention dieses Artikels bitte ich zu unterlassen. *danke*

PPS:
So wie ich das verstanden habe, können bzw. sind nur Bürgerinenn und Bürger der BRD, die vor 1945 geboren wurden, „Rechsbürger“ sein. – Somit sollte sich das Problem doch eigentlich zeitnah erledigt haben, oder?! *sryfürdiepietätlosigkeit*