Php fopen写入css文件->文件是空的


Php fopen write in css file -> file empty

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

我能看到的一些错误是:

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

  2. 打开同一个文件两次。

对于flock的第二个参数也使用PHP常量(LOCK_SH, LOCK_UN)。这将使您的程序更具可读性。

更新

您是否检查了它是否写入了与您期望的不同的目录?检查您的路径,看看它的默认位置,或者甚至只是搜索文件,看看它还会出现在哪里。Getcwd()将显示当前的工作目录。

您是否检查了fwrite的返回值以查看写入是否实际工作?如果fwrite成功,则尝试使用相同的$id_file读取代码中的文件,并在程序仍在运行时查看那里是否有任何内容。

你调用了两次fopen。W +截断文件,你正在写到第二个$id_file,所以我的猜测是,当第一个$id_file被关闭时,它被截断。

如果使用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);