PHP覆盖文件问题


PHP overwriting file issues

我在覆盖文件时遇到问题。除了,我什么都试过了。有时候(可能是时间问题)似乎没有什么能正常工作。下面是代码:

include_once "changevar.php";
changevar("O",$seguimedia,$filename,0);
changevar("o",$offerta,$filename,0);

$seguimedia, $filename和$offerta设置正确。

changevar.php:

function changevar($varname,$newval,$filename,$type)
{
    while(!$fp=fopen($filename,"c+"))
    {
        usleep(100000);
    }
    while(!flock($fp,LOCK_EX))
    {
        usleep(100000);
    }
    while(!include($filename))
    {
        usleep(100000);
    }
    ftruncate($fp,0);
    rewind($fp);
    $$varname=$newval;
    if($type==0)
    {
        foreach(array("u","p","t","d") as $v){$$v=str_replace("''","''''",$$v);}
        $text="<?'$o=$o;'$u='"$u'";'$c=$c;'$m=$m;'$p='"$p'";'$C=$C;'$id='"$id'";'$t='"$t'";'$d='"$d'";'$O=$O;?>";
    }
    else
    {
        $text="<?'$impressions=$impressions;'$clickunici=$clickunici;'$clicknulli=$clicknulli;'$creditiguadagnati=$creditiguadagnati;'$creditiacquistati=$creditiacquistati;'$creditiutilizzati=$creditiutilizzati;?>";
    }
    fwrite($fp,$text);
    flock($fp,LOCK_UN);
    fclose($fp);
}

在这种情况下,函数changevar()必须更改文件$filename中的两个变量($o和$o),但它经常失败并且没有任何更改。我该如何解决这个问题?

确保您有写权限和正确的用户设置来更改文件内容。您可以在linux系统中使用chown和chmod来完成此操作。我不确定这是不是windows盒子的问题

参见http://php.net/manual/en/function.chmod.php和http://www.php.net/manual/en/function.chown.php