Beiträge von hromatka

    Ich glaub' jetzt hab ich's!

    Das Problem dürfte daran liegen, dasz es eine Option bei php gibt, die das Verhalten von fread() dergestalt ändert, dasz trotz gesetztem binary Attribut ("b"), einige Werte beim lesen durch Escape-Zeichen ersetzt werden, z.B. eben \x0000. Die Option heiszt:

    Code
    magic_quotes_runtime


    findet sich in der Datei php.ini. und kann dort ein für allemal ausgeschalten werden. Scheinbar kann Sie auch mit

    Code
    set_magic_quotes_runtime (0);


    für die Dauer einer Session übersteuern, wahrscheinlich ist der Wert für alle, die keine Probleme haben, ohnedies ausgeschalten, und Bjoern hat auf seiner alten WP Version die obige Zeile drinn (irgendein Plugin, oder auch nur ein biszchen Code das rausgefallen ist weil keiner geglaubt hat, das man das noch braucht).
    Komme derzeit nicht an meinen Server heran und musz es deshalb noch ausprobieren, aber das dürfte die Lösung sein.

    Liebe Grüsze aus Buenos Aires, Argentinien
    Alexander Juan [/code]

    OK: Da ist der Bug! (Aber Warum???)

    Habe jetzt nochmals die ganzen .php´s auseinandergenommen, und bin auf folgendes draufgekommen:

    Aus einem mir derzeit noch unerfindlichen Grund, ersetzt die Funktion fread($handle,$bytes) in streams.php alle vorkommende \x0000 Werte durch \x5c30 (das entspricht den zwei Zeichen "\" und "0") obwohl beim öffnen der Datei "binary read" = "rb" eingeschalten worden ist. Das hat zur Folge, dasz z.B. aus dem 32bit Integer \x00000101 (also 256) der 32bit Integer \x5c300101 wird (also 1546649857). Damit liegen alle Zeiger auszerhalb der Datei, folgedessen findet gettext.php dort auch keine Uebersetzungstabelle...
    Dirty fix: man ersetze in der Datei streams.php (und zwar für das Objekt CachedFileRead)

    Code
    this->_str = fread ($fd,$lenght);


    durch

    Code
    while (false !==($char=fgetc($fd))) {
      $this->_str = $this->_str.$char;
    }


    Jetzt funktiniert zwar die Übersetzung einwandfrei, nur wird die .mo Datei Zeichenweise ausgelesen, und das ist alles andere als schnell....
    HILFE: Wer kann mir sagen, wie man fread() zur Raison bringt und ohne diesen "dirty Fix" auskommt?

    Selbes Problem mit Sprachdatei...!

    Hi Bjoern!

    Ich habe das selbe Problem mit dem Fehler:

    Code
    PHP Warning:  unpack(): Type V: not enough input, need 4, have 0 in gettext.php on line 82

    nachdem ich eine deutsche Sprach-".mo" Datei installiert habe. Habe mir ein wenig die .php Dateien angesehen, scheinbar sind wp-l10n.php, streams.php und gettext.php an der Auswertung der .mo Daten beteiligt. Habe fuer jede jeweils auch ältere Versionen ausprobiert (Gettext.php 1.0.1, Gettext.php 1.0.3, wp-turbo, Dateien der Version 1.2.2). Habe auch andere .mo Dateien ausprobiert, inkl. selbst kompilierter (using poEdit). Erfolg := Null.

    Auf welche Version von Wordpress hast Du "downgegraded"? Welche plugins benutzt Du, irgendwas was auf der alten Version nicht, auf der neuen aber schon installiert ist?