2011-12-16 4 views
2

일부 csv 구문 분석을 수행하고 있으며 fclose() 함수가 호출되기 전에 구문 분석을 취소하거나 (다른 페이지로 이동하거나 새로 고침하여) 난 다시 가서 프로그램을 다시 시작할 때 나는 아래의 오류 :PHP 편집을 위해 잠긴 파일 액세스 - 권한 거부 오류

Warning: unlink(spreadsheet.csv) [function.unlink]: Permission denied 

내가 Excel에서 spreadsheet.csv 파일을 열려고 할 때, 나는 "말, 스프레드 시트 오류는"파일 사용 "을 얻는다. csv는 '다른 사용자'가 편집 할 수 없도록 잠겨 있습니다. "내 PHP 서버가 현재 파일에 액세스하려고 시도하는 중임을 알고 있습니다. 파일이 편집을 위해 잠겨 있는지 확인하기 위해 PHP를 사용할 수있는 방법이 있습니까?

+0

http://php.net/manual/en/function.flock.php –

답변

0

:

나는처럼 사용 :

$iOldumask = umask(0); 
chmod("path/file.txt", 0777); 
umask($iOldumask); 
+0

좋은 조언을 전했지만 내 문제를 알아 냈습니다. 내 웹 페이지는 매우 긴 PHP 스크립트에서 데이터를 반환하는 아약스 호출을 사용하므로 페이지를 일찍 끝내더라도 해당 PHP 스크립트가 아직 수행 중입니다. 백그라운드에서 실행중인 Ajax 요청이 있으면 이전 Ajax 요청을 실행하지 않도록 서버에 알릴 수있는 방법이 있습니까? – user954912

+0

예, 여기를보십시오 (http://stackoverflow.com/questions/446594/kill-ajax-requests-using-javascript-using-jquery) – noob

0

flock()을 살펴보십시오. 파일이 인에

$rFile = fopen("path/file.txt", "r+"); 
flock($rFile, LOCK_UN); 
fclose($rFile); 

그리고 읽기 - 쓰기 액세스 얻을 수있는 가장 좋은 방법 :이 같은 PHP로 파일의 잠금을 해제하려고 할 수

if (!$file->flock(LOCK_EX)) { 
    throw new Exception('Unable to obtain lock on file'); 
}