2011-02-06 3 views
4

나는 하나의 문자열을 파일에 쓰는 데 어려움을 겪고있다. (아직 생성되지 않은 경우)PHP로 파일 쓰기가 비어 있습니까?

$fp = fopen('/my/absolute/path/data.txt', 'w'); 
fwrite($fp, 'just a testing string...'); 
fclose($fp); 

파일이 생성됩니다하지만 비어 : 나는 슬랙웨어 13 세 미만 단순한 코드를 사용하고 있습니다?! 이 파일이 쓰여진 디렉토리는 아파치 사용자 & 그룹 (daemon.daemon)이 ​​소유하고 있으며, 권한은 0777입니다. 이것은 전에 나에게 일어난 적이있다. 나는 파일 안에 쓸 수없는 이유가 무엇인지 궁금하다.

미리 감사드립니다.

+2

아파치 로그를 확인하십시오. –

+0

코드 자체는 확실히 괜찮습니다. – Raffael

+3

시도해보십시오 * $ df -h * :-) –

답변

6

그것은 아마 당신의 디스크가 가득 의미 $ df -h

을보십시오.

+1

끔찍한 경험에서 굉장한 경험, 나는 추측합니까? :) –

+0

@AmigableClarkKant, :) –

2

내 생각에 당신은 반환 값을 확인할 수 있습니다 :

$fp = fopen('/my/absolute/path/data.txt', 'w'); 

// $fp -> manual: "Returns a file pointer resource on success, or FALSE on error." 
if ($fp) { 
    $bytes_written = fwrite($fp, 'just a testing string...'); 

    if ($bytes_written) { 
     echo "$bytes_written bytes written!\n"; 
    } else { 
     echo "Error while writing!\n" 
    } 

    $success = fclose($fp); 

    if ($success) { 
     echo "File successfully closed!\n"; 
    } else { 
     echo "Error on closing!\n"; 
    } 
} else { 
    echo "No filepointer ressource!\n"; 
} 
1

파일이 닫히기 전에 뭔가 스크립트/파일에 무슨 일이 일어나고 될 수 있습니다. 파일에 액세스하려는 다른 프로세스가 있는지 확인하십시오 (lsof을 사용할 수 있음). 또한 같은 일이 발생하는지 확인하기 위해 새 파일에 쓰십시오.

또한 파일이 성공적으로 닫히고 있는지 확인하려면 fclose()의 반환 값을 확인하십시오.