Hallo,
mein PHP-Skript soll eine Datei erstellen. Der Dateiname wird dabei mit weiteren Information in einer JSON-Datei gespeichert und anschließend mittels json_decode() in einem Array gespeichert.
Problem an der ganzer Sache ist, dass gleich mehrere Dateien durch fopen() erstellt werden. Der Dateiname setzt sich dabei aus zwei Teilen zusammen. Einmal aus „file-“ und dem Identifier aus der JSON-Datei. Allerdings scheint das nicht so ganz zu funktionieren, denn angenommen der Dateiname soll „001“ lauten, werden folgende Dateien erstellt:
[ol]
[li]file-.txt[/li][li]file-001.txt[/li][/ol]
file-.txt ist dabei die falsche Datei, beziehungsweise soll nicht erstellt werden. Befülle ich das Array mit dem Dateinamen nochmal manuell in PHP, so wird nur file-001.txt erstellt. Verarbeite ich die Informationen jedoch direkt aus der JSON-Datei, so werden die oben aufgelisteten Dateien erstellt.
Meine Vermutung liegt darin, dass sich der Zeichensatz unterscheidet, wobei mb_detect_encoding() allerdings in beiden Fällen ASCII ergab.
Mehrmals aufgerufen wird das fopen() nicht.
Ich kann hier nicht den ganzen Quellcode posten, da er sich auf mehrere Dateien aufteilt und an sich recht lang ist. Einen vereinfachten Quellcode habe ich schon probiert, da funktioniert aber alles.
Irgendwelche Ideen habt ihr nicht ‚rein zufällig?
Hab‘ gerade nochmal versucht, das ganze nochmal nachzustellen, klappt nur mit dem Originalcode. Wäre es denn möglich, dass ich jemandem die Dateien privat schicke?
Da hier niemand eine Kristallkugel hat, kann man dir auch nicht „zufällig“ helfen. Du könntest deine Dateien auch bei einem Dienst wie http://pastebin.com/ hinterlegen.
So … es scheint an dem fopen(), beziehungsweise fgets() der vorherigen Datei zu liegen. Versuche ich, sie mit fgets() auszulesen, bekomme ich null, beziehungsweise false. Stelle ich dann hingegen ein „json_decode“ davor, scheint es zu funktionieren, allerdings werden dann die zwei Dateien erstellt.
[ol]
[li]Die Datei besteht aus einer Zeile[/li][li]Mit $dateiarray = json_decode(fgets($datei), true); liest du diese eine Zeile ein[/li][li]Was soll dann bei $dateijson = fgets($datei); rauskommen? Da ist nix mehr zum einlesen![/li][/ol]