FastCGI und Standard Out

October 3, 2006 by Michael

Gestern habe ich mich eine kleine Ewigkeit mit Ruby on Rails, RMagick und FastCGI geärgert.

Mit kleinen Schwierigkeiten habe ich meine ImageMagick Installation soweit gebracht, dass RMagick und Rails problemlos funktionierten.

Ziel war ein Imageupload mit anschliessender Verarbeitung durch RMagick. Da nicht immer eine temporäre Datei beim Upload ensteht, habe ich mich an ein Tutorial gehalten, wo folgende Code empfohlen wurde:

Magick::Image::read_inline(Base64.b64encode(feld.read)).first

Image::read_inline liest einen Base64 kodierten String. Soweit kein Problem, es funktionierte auch alles. Bis ich wieder auf Production und somit auf FastCGI umschaltete.

Die Anwendung stürzte nach dem Upload und der Verarbeitung der Bilder ab.

Im Apache error.log stand nur:

 FastCGI: comm with server "/Users/msimons/Entwicklung/rails/daily/public/dispatch.fcgi" aborted: error parsing headers: malformed header '/9j/4TseRXhpZgAASUkqAAgAAAALAA4BAgAgAAAAkgAAAA8BAgAFAAAAsgAA'

Drollig. Ich hab längere Zeit gesucht, bis ich den Hinweis fande, dass man beim FastCGI Prozess besser nicht ins Stdout schreibt. Genau das macht Base64.b64encode aber. Hatte mich schon geärgert, weil das verlangsamt das ganze natürlich bei großen Dateien.

Wenn ich obige Zeile in

Magick::Image::read_inline(Base64.encode64(feld.read)).first

ändere, ist alles in bester Ordnung. Der Malformed Header hatte ergo nichts mit RMagick zu tun. Toll.

No comments yet

Post a Comment

Your email is never published. We need your name and email address only for verifying a legitimate comment. For more information, a copy of your saved data or a request to delete any data under this address, please send a short notice to michael@simons.ac from the address you used to comment on this entry.
By entering and submitting a comment, wether with or without name or email address, you'll agree that all data you have entered including your IP address will be checked and stored for a limited time by Automattic Inc., 60 29th Street #343, San Francisco, CA 94110-4929, USA. only for the purpose of avoiding spam. You can deny further storage of your data by sending an email to support@wordpress.com, with subject “Deletion of Data stored by Akismet”.
Required fields are marked *