1

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

在一个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)中提到的名称的文件。我在这里拧干什么呢?

在此先感谢下

4

4 回答 4

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';
于 2010-04-01T08:36:31.643 回答
1

您是否正在查看该脚本也认为它是当前目录的目录?你的apache进程在那里有写权限吗?错误日志中是否提到了任何失败的命令?

于 2010-03-31T23:13:12.900 回答
0

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

于 2011-07-21T07:31:52.860 回答
0

请记住,该文件是在进程的主线程运行的目录中创建的。这意味着如果“主”程序位于 A/ 中,并且它包含来自 B/ 的函数文件,则 B 中的函数会在“.”中创建文件。在 A/ 中而不是在 B/ 中创建它

另外,不需要调用 fwrite 函数 3 次,你可以这样做

fwrite($file, "\n" . $name . ", " . $lastname . ", " . $email);
于 2010-03-31T23:27:51.697 回答