我正在尝试使用fopen()将一个长字符串(>700.000个字符)保存到服务器上的文件中。
$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。但没有成功。
这让我感到非常困扰,因为我只是看不到哪里出了问题或者我错过了什么要检查的东西。
希望你能帮助我。非常感谢!
file_put_contents($filename, $content);
并确认问题是否仍然存在吗? - N.B.