访问已被锁定的文件进行编辑-权限被拒绝错误


PHP Accessing a file that has been locked for editing - Permission Denied error

我正在做一些csv解析,如果我在调用fclose()函数之前取消解析(通过导航到不同的页面或刷新),当我返回并再次启动程序时,我会得到以下错误:

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

当我尝试在excel中打开电子表格。csv文件时,我得到一个"文件在使用"错误,说"电子表格。csv被锁定编辑"另一个用户。'"我知道我的php服务器目前处于试图访问文件的状态。是否有一种方法,我可以使用php检查文件是否被锁定编辑,并解锁它?

你可以尝试用php像这样解锁一个文件:

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

对文件进行读写访问的最好方法是:

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

看看flock()

我这样使用它:

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