我有以下PHP代码:
$filename = '/front/style.css';
$cssfile='#h1{font-size:12px}';
if($id_file=fopen($filename, "w+"))
{
echo'file exist';
$id_file=fopen($filename, "w+");
flock($id_file,1);
fwrite($id_file,$cssfile);
flock($id_file,3);
fclose($id_file);
}
else
{
echo "file don t exist";
}
我的文件是空的,但有空格。 我的文件存在且可写。 我的apache日志中没有任何内容。 我使用Mamp和php 5.3.2。
有什么想法吗? THX
答案 0 :(得分:5)
我能看到的一些错误是:
您正在使用fopen
检查文件是否存在。这不起作用。使用w+
模式,如果文件不存在,PHP将尝试创建该文件。使用file_exits
函数检查文件是否存在。
您要打开两次相同的文件。
还使用PHP常量(LOCK_SH
,LOCK_UN
)作为flock
的第二个参数。这将使您的程序更具可读性。
答案 1 :(得分:1)
<强>更新强>
您是否检查过它是否写入了与您预期不同的目录?检查您的路径以查看其默认位置,甚至只是搜索该文件并查看其中的其他位置。 getcwd()将显示当前正在运行的目录。
您是否检查了fwrite的返回值以查看写入是否真的有效?如果fwrite成功,那么尝试使用相同的$ id_file读取代码中的文件,并在程序仍在运行时查看是否有任何内容。
你打电话给fopen两次。 w +截断文件,你正在写第二个$ id_file,所以我的猜测是在第一个$ id_file被关闭时被截断。答案 2 :(得分:0)
如果在使用fopen w +选项后文件为空,则可以使用此方法。
// only read
$filename = '/path/to/blah.txt';
$myfile = fopen($filename, "r");
$mydata = fread($myfile, filesize($filename));
$mynewdata = $mydata + 'abc';
fclose($myfile);
// only write
$myfile = fopen($filename, "w");
fwrite($myfile, $mynewdata);
fclose($myfile);