我一直在努力将单个字符串写入文件。 我在Slackware 13下只使用了一个简单的代码:
$fp = fopen('/my/absolute/path/data.txt', 'w');
fwrite($fp, 'just a testing string...');
fclose($fp);
文件被创建(如果它尚未创建)但它是空的? 写入此文件的目录由apache的用户& group(daemon.daemon)并具有0777权限。 这在我之前从未发生过。我很好奇是什么原因导致我无法在文件中写入内容?
提前致谢。
答案 0 :(得分:6)
尝试$ df -h
这可能意味着您的磁盘已满。
答案 1 :(得分:2)
在我看来,你可以查看返回值:
$fp = fopen('/my/absolute/path/data.txt', 'w');
// $fp -> manual: "Returns a file pointer resource on success, or FALSE on error."
if ($fp) {
$bytes_written = fwrite($fp, 'just a testing string...');
if ($bytes_written) {
echo "$bytes_written bytes written!\n";
} else {
echo "Error while writing!\n"
}
$success = fclose($fp);
if ($success) {
echo "File successfully closed!\n";
} else {
echo "Error on closing!\n";
}
} else {
echo "No filepointer ressource!\n";
}
答案 2 :(得分:1)
我建议使用file_put_conents($ file_name,$ file_cotents); 并检索内容:file_get_contents($ file_name);
代码也看起来更干净。
http://php.net/manual/en/function.file-put-contents.php和 http://www.php.net/manual/en/function.file-get-contents.php
答案 3 :(得分:1)
在文件关闭之前,脚本/文件可能会发生某些事情。检查是否有任何其他进程尝试访问该文件(您可以使用lsof
)。还可以尝试写入新文件以查看是否发生了同样的事情。
另外,检查fclose()
上的返回值以确保文件成功关闭。