Halihallo Andreas
Ich kann mir leider nicht so wirklich vorstellen, wo der Fehler sein könnte; könnte ja auch verschiedene Ursachen haben. Versuch doch einmal alle Zeichen im Intervall 0-32 und eventuell 126-255 zu kodieren; ich könnte mir nämlich vorstellen, dass CURL bei einem gewissen Zeichen abbricht, weil es das Zeichen als Steuercode interpretiert und den String zu früh als beendet interpretiert...
Hm. Auf alle Fälle ist das was da am anderen Ende ankommt kein gültiger gzip String.
Also, entweder es liegt bei der Übertragung, was ich nicht glaube, oder CURL liest nicht alles ein, oder bei CURL kommt gar nicht alles an, weil z. B. die Konsole die Eingabe schon als geschlossen erachtet...
Ich kann mir das miot den Zeichen als Steuercode nicht vorstellen, denn ich übergebe den Binärcode komplett ab die Standardeingabe von Curl, da sollte Curl eigentlich egal sein was da kommt,
Ich kenne mich "einwenig zu wenig" damit aus, aber es könnte sein, dass hier die Konsole noch was zu sagen hat...???
--curlKRTz6g8xhQF8Phqz3iLuawNTPl4 ist doch dieser boundary-String oder wie das hieß, und der ist dann wieder am Ende, was dazwischen kommt sollte doch recht egal sein, oder?
Ja.
Das Problem muß schon vorher passieren, denn der gz-String den ich in PHP mit gzcompress()(nicht gzinflate!) erzeuge ist ja korrekt, das habe ich breits geprüft. Ich öffne ja die Shell(Dos) mit popen(), und übergebe mit fputs() den gz-String an die Standardeingabe von curl.
hast du den Handler aber schon auch auf binary gesetzt, oder? - Ich habe nämlich in dem gzwurm einige 0a0d's gesehen => riecht nach win, obwohl dort nur vielleicht ein 0d stehen sollte... binmode(HANDLE)!
vermutlich passiert da unterwegs irgendwas unvorhergesehenes, kann ja auch ein bug in der Windowsversion von Curl oder PHP oder auch Windows2000 selbst sein,
bestimmt letzteres :-)
Ich kann mir hier eben sehr gut vorstellen, dass die \015 durch \015\012 übersetzt werden...
aber es wäre schon etwas vermessen wenn ich das ganze jetzt auf einen bug schiebe, vermutlich habe ich einen Fehler gemacht, nur wo?
Vielleicht sollte ich --data-binary versuchen?
das klingt schon mal gut.
aber das hat so nicht funktioniert(wenn ich einach --form durch --data-binary ersetze). Vor allem wird das ja nicht als multipart/form-data übertragen, oder?
Muss doch auch nicht... Die POST-Daten kannst du ja dann über STDIN einlesen (php?); achung: auch hier wieder zuerst binmode(STDIN). Und dann den eingelesenen String an gz übergeben.
Ich verstehe inzwischen überhaupt nichts mehr inzwischen läuft noch nicht mal mehr die Variante mit --data. es ist reiner Zufall ob CURL den String nun überträgt oder nicht.
Nix Zufall, das gibt's nicht ;-)
Vielleicht heisst der Zufall, dass ein Zeilenumbruch im gzString ist, der nicht 1:1 sondern eben Win:irgendwas übersetzt wird??? :-)
Und bei der --data Variante war das ganze noch urlencodet!
Nun, das hätte ja auch sein können, aber in der binary Geschichte ist das Problem ja schon vorher geschehen.
Viele Grüsse
Philipp
PS: Wehe dir, du hast die Dateihandles nicht auf binmode gesetzt! :-)) Das Problem'schen kommt mir irgendwie bekannt vor :-)