当文件存在时,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);
我使用正确的标记(fopen
,fwrite
并尝试了其他标记w
和w+
尝试了相同的操作但仍然遇到了同样的问题:如果文件已经存在它工作得很好,否则它会给我相同的错误信息。
我知道文件路径是正确的。我正在使用Windows 7进行本地开发。
答案 0 :(得分:1)
当文件不存在时,您将../
添加到路径中,因此您尝试写入:
../../templates/stuff.xml
您确定文件夹../../templates
是否存在(并且PHP可以写入它)?
在写入文件之前,您需要检查该文件夹是否存在。尝试使用is_dir()
:
if(is_dir(dirname($file))){
file_put_contents($file, $file_contents);
}