Php fopen在css文件中写 - >文件为空

时间:2011-12-13 03:20:41

标签: php fopen fwrite

我有以下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

3 个答案:

答案 0 :(得分:5)

我能看到的一些错误是:

  1. 您正在使用fopen检查文件是否存在。这不起作用。使用w+模式,如果文件不存在,PHP将尝试创建该文件。使用file_exits函数检查文件是否存在。

  2. 您要打开两次相同的文件。

  3. 还使用PHP常量(LOCK_SHLOCK_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);