2013-05-24 6 views
0

파일을 덮어 쓰는 동안 문제가 있습니다. 나는 영원히 노력했지만 가끔 (어쩌면 시간의 문제가 있음) nothings가 제대로 작동하는 것 같습니다. 코드는 다음과 같습니다.PHP 덮어 쓰기 파일 문제

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()는 파일 $ 파일명에서 두 변수의 ($ O 및 $ O)를 변경해야하지만, 종종 실패하고 아무것도 변화하지 않는다. 이 문제를 어떻게 해결할 수 있습니까?

답변

0

파일 내용을 변경하려면 쓰기 권한이 있고 사용자 집합이 올바른지 확인하십시오. 리눅스 시스템에서 chown과 chmod를 사용하면된다. Windows 상자에 문제가 있는지 확실하지 않습니다.

때때로 ** 작동 ** 사실, http://php.net/manual/en/function.chmod.phphttp://www.php.net/manual/en/function.chown.php

+0

권한이 올바르게 설정을 참조하십시오. 나는 권한 1 대신 덮어 쓰기 문제라고 생각한다. – Megadv

+0

쓰기 권한이 없다면 정말로 파일에 쓸 수 없다. 덮어 쓰기는이 컨텍스트에서 사용 권한의 동의어가 될 수 있습니다. 그 때만 발생하는 경우 다음 프로그램의 '흐름'에 이상이있을 수 있습니다. 다소 모르는 사이에 해독하기가 다소 어렵습니다. 가장 좋은 방법은 xdebug 또는 zend 디버거를 사용하여 단계별로 디버깅하는 것입니다. 죄송합니다 더 도움이 될 수 없습니다. 모두 제일 좋다. 문안 인사 – Rijndael