fopen创建不存在的新文件

时间:2010-03-31 23:10:35

标签: php windows apache fopen

我正在尝试创建一个不存在的文件或写入已经存在的文件。

在php文件中我正在尝试这个:

  

$ file = fopen(“data.txt”,“a”);

     

fwrite($ file,“\ n”。$ name);   fwrite($ file,“,”。$ lastname);

     

fwrite($ file,“,”。$ email);

     

FCLOSE($文件);

我在Windows Xp下运行Apache并且没有运气创建文件“data.txt”。文档说添加a参数应该创建一个文件,其名称在第一个参数(data.txt)中提到。我在做什么呢?

提前致谢 undersound

4 个答案:

答案 0 :(得分:3)

让我们为您的代码添加一些测试和调试输出

echo 'cwd is: ', getcwd(), "<br />\n";
echo 'target should be: ', getcwd(), "/data.txt <br />\n";
echo 'file already exists: ', file_exists('data.txt') ? 'yes':'no', "<br />\n";

$file = fopen("data.txt", "a");
if ( !$file ) {
  die('fopen failed');
}
$c = fwrite($file, "\n$name,$lastname,$email");
fclose($file);
echo $c, ' bytes written';

答案 1 :(得分:1)

您是否正在查看脚本也认为是当前目录的目录?你的apache进程是否有写权限?错误日志是否在此提及任何失败的命令?

答案 2 :(得分:0)

请记住,该文件是在运行进程主线程的目录中创建的。这个测量如果“主”程序在A /中并且它包括来自B中的B / a函数的函数文件,其在“。”中创建文件。在A /而不是B /

中创建它

此外,没有必要调用fwrite函数3次,你可以

fwrite($file, "\n" . $name . ", " . $lastname . ", " . $email);

答案 3 :(得分:0)

如果附加到已经存在的data.txt,但没有创建一个尚不存在的文件,则很可能意味着文件权限允许写入,但文件所在的文件夹不属于Apache,因此,它无法在那里创建文件。