PHP Доступ к файлу, заблокированному для редактирования - ошибка "Отказано в доступе"

Я делаю некоторый синтаксический анализ csv, и если я отменяю синтаксический анализ (переходя на другую страницу или обновляя) до вызова функции fclose(), я получаю следующую ошибку, когда возвращаюсь и снова запускаю программу:

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

Когда я пытаюсь открыть файл spreadsheet.csv в Excel, я получаю сообщение об ошибке "Файл используется", в котором говорится, что "spreadsheet.csv заблокирован для редактирования другим пользователем". Я понимаю, что мой php-сервер в данный момент застрял в состояние попытки доступа к файлу. Есть ли способ, которым я могу использовать php, чтобы проверить, заблокирован ли файл для редактирования, и разблокировать его?

2 ответа

Решение

Вы можете попытаться разблокировать файл с помощью php следующим образом:

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

И лучший способ получить доступ для чтения и записи к файлу:

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

Посмотрите на стадо ().

Я использую это как:

if (!$file->flock(LOCK_EX)) {
    throw new Exception('Unable to obtain lock on file');
}
Другие вопросы по тегам