PHP file_put_contents与文件一起使用,没有文件“无法打开流:没有这样的文件或目录”

时间:2014-02-25 19:54:52

标签: php fwrite

当文件存在时,PHP file_put_contents函数可以正常工作。如果文件不存在,我收到错误“无法打开流:没有这样的文件或目录”。

 $file = '../templates/stuff.xml';
 if (!file_exists($file)) {$file = '../'.$file;}
 $var['xhtml'] = $_POST['post_xhtml'];
 $file_contents = serialize($var);
 file_put_contents($file,$file_contents);

我使用正确的标记(fopenfwrite并尝试了其他标记ww+尝试了相同的操作但仍然遇到了同样的问题:如果文件已经存在它工作得很好,否则它会给我相同的错误信息。

我知道文件路径是正确的。我正在使用Windows 7进行本地开发。

1 个答案:

答案 0 :(得分:1)

当文件不存在时,您将../添加到路径中,因此您尝试写入:

../../templates/stuff.xml

您确定文件夹../../templates是否存在(并且PHP可以写入它)?

在写入文件之前,您需要检查该文件夹是否存在。尝试使用is_dir()

if(is_dir(dirname($file))){
    file_put_contents($file, $file_contents);
}