file_get_contents有效,但file_put_contents无效

时间:2019-04-11 04:34:08

标签: php

我在win7上,xampp。这有效:

$path = '../HOME/01.html';  
$cnt = file_get_contents($path);
echo $cnt;

这不起作用:

$path = '../HOME/01.html'; 
$cnt = 'lorem ipsum';       
file_put_contents($path, $cnt);

没有错误或警告,只是01.html没有内容。

1 个答案:

答案 0 :(得分:2)

manual page中可以看到:

  

此函数返回已写入文件的字节数,如果失败则返回FALSE。

您应该检查以确保返回值不是false

if (file_put_contents($path, $cnt) === false) {
    // handle error
}

但是,我认为绝大多数情况是缺少写入文件的权限。幸运的是,PHP有一个function to check that

if (!is_writable($path)) {
    // No permission to write
}

因此,将这两部分放在一起,您可以执行以下操作:

if (file_put_contents($path, $cnt) === false) {
    if (!is_writable($path)) {
        return "You do not have permission to write to $path";
    }
    return "An unknown error occurred while writing to $path";
}
return "successfully wrote to $path";