Я пытаюсь сохранить длинную (> 700 000 символов) строку в файл на сервере с помощью fopen ().
$file = fopen($filename, 'w+');
fwrite($file, $content);
fclose($file);
echo $content;
Но каким-то образом это приводит к правильному содержимому файла, когда файл уже существует.
Если файл не существует, он создается с «загадочным» содержимым, что для меня не имеет никакого смысла.
(Пока эхо $ content отображает правильные значения)
Пример первых нескольких символов файла:
‹W_oÛ6N €} Vè¨, Ë ©“ 8µ téþ´ÈÖ¬ÍÐm /% ž $ Ö4 © ‘” tè7Û۾؎ ”
Когда я перезагружаю скрипт, файл уже существует, и содержимое записывается правильно и отображается правильно, как и раньше.
Это также работает, когда я сам создаю файл через FTP (независимо от того, какой контент у него был раньше, я тоже пробовал «Hello»). Пока файл уже существует, все в порядке.
Также очень странным является тот факт, что если я вставлю var_dump, чтобы увидеть, каково значение $ content в определенной точке, файл будет записан с правильным содержимым, но echo возвращает «загадочную» строку.
Кажется, что var_dump всегда имеет правильные значения.
Я уже пытался использовать почти все различные режимы fopen (), такие как «wb», «wb +», «wt», «wt +», «xt» и т. Д.
Я проверял пути, разрешения и искал Google всю ночь. Нет успеха
Это меня бесит, потому что я просто не вижу, что не так или что мне не хватает, чтобы проверить.
Я надеюсь, что вы можете мне помочь.
Большое спасибо !
Может быть, использовать utf8_encode ()
$content = utf8_encode("text dsdasasd");
$file = fopen($filename, 'w+');
fwrite($file, $content);
fclose($file);
echo $content;
Других решений пока нет …