PHP file_put_contents()错误

时间:2010-11-07 14:09:58

标签: php

每次我尝试修改文件时,都会收到此错误,但我不知道这意味着什么:

A PHP Error was encountered

Severity: Warning

Message: file_put_contents() [function.file-put-contents]: Only 0 of 19463 bytes written, possibly out of free disk space

Filename: Template/String.php

Line Number: 369

我试图寻找解决方案,到目前为止,在我看来,没有一个是有道理的。

有什么想法?请点点帮忙。非常感谢你。

7 个答案:

答案 0 :(得分:7)

这是一个老问题,但在谷歌搜索错误消息时出现。以下是此错误消息的另一个可能原因。

ext2 / 3/4文件系统可以为root保留磁盘空间。通常它是驱动器的5%。 df显示驱动器未完全使用。 Root可以写入驱动器。非root用户只能创建文件,但不能向其写入任何数据。有关详细信息,请参阅dumpe2fs和tune2fs。

答案 1 :(得分:2)

这可能意味着PHP能够获得有效的文件描述符,但在实际尝试写入数据时会碰壁(例如配额,粘滞位等)。

也可以想象您正在(可能是在不知不觉中)写入与其对等方有问题的网络文件系统。

有关您的平台的更多信息会有所帮助(我看到SELinux在配置不当时会做出奇怪的事情),但我认为您可以了解要检查的内容。

答案 2 :(得分:2)

这只是您要保存内容的权限,例如readonly或就像错误本身一样,没有磁盘空间。

答案 3 :(得分:2)

您可能需要在服务器上增加该用户的配额。您可以通过删除文件并查看是否允许您重新上传该文件来确认这一点,但不能再进一步。

如果您有Webmin,请转到系统>磁盘配额。 (有关详细说明,请参阅this wiki。)

如果您没有Webmin或类似界面,则需要查找如何根据您使用的Linux发行版手动编辑用户配额设置。

如果您无法访问服务器,则需要联系相关人员并询问您的磁盘配额是什么以及是否可以增加。

答案 4 :(得分:1)

对我来说,我在登录页面上也遇到了同样的错误。在探索时,我发现storage/logs/laravel.log文件已经增长到24G的大小。清除它解决了这个问题。要查找目录的大小,请使用linux命令du -sh *du -sh <filename>。使用truncate命令清除日志文件是最佳选择。因为文件的大小很大,因为使用vim和删除操作可能很困难。要截断,请使用命令truncate -s 0 <filename>

答案 5 :(得分:0)

我去了根目录

cd /

并使用

搜索空间占用率最大的文件夹
du -sh *

从那里我能够跟踪令人头疼的文件,/ var / log中的pluto.log。这可以是任何文件。

答案 6 :(得分:0)

也许您之前已锁定目标文件,请尝试:

$fp = fopen('yourfile.etc', 'r+');
if (!flock($fp, LOCK_EX | LOCK_NB)) {
    //this file is actually being used from another script / user, that's the problem.
} else {
    //ok, there wasn't lock on it, must be something else
    fclose($fp);
}