Невозможно записать в файл базы данных SQLite только для чтения.

У меня есть приложение, отвечающее за маршрутизацию URL других моих проектов, которые я разработал в среде Windows.

Теперь, когда у меня есть среда Linux, установленная на виртуальной машине, и я не могу перегенерировать маршруты своих приложений, потому что файл SQLite, который я использую для хранения информации, очевидно, не может быть записан подпрограммами в моих приложениях PHP.

Я получаю исключение PDOException со следующим сообщением:

SQLSTATE [HY000]: общая ошибка: 8 попыток записи базы данных только для чтения

я прочел этот стек говоря, что родительская папка файла SQLite тоже должна быть доступна для записи. Ну … я новичок в мире Linux, и я решаю несколько небольших проблем по одной за раз, и хотя я понимаю это … ограничительная политика, которую имеет / имеет Linux, я не знаю, как это исправить.

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

Разрешения папки

И я читал PHP-скрипты, запускаемые с другим пользователем или группой. Что я должен делать?

Вздох … Я злюсь на эту среду Linux …

0

Решение

После прочтения комментарий на доске обсуждений Ubuntu у меня есть частичный ответ на мою проблему. Видимо права доступа к файлам на смонтированных папках NFS, которые я думаю, что это Windows NTFS (файловая система), плохо спроектированы.

После этого ответа я решил переместить файл SQLite куда-нибудь еще, за пределы смонтированной папки. Я получил новую ошибку о том, что файл базы данных не может быть открыт, но на этот раз я уже знал об описанном ограничении SQLite PDO Вот,в котором говорится, что родительская папка также должна быть доступна для записи.

Разрешения исправлены и все заработало. 🙂

После этого я заметил еще один комментарий впереди говоря, что эта ошибка была исправлена ​​в Samba 3.2.5, что странно, потому что после запуска Smbstatus Команда, которую я получил в качестве версии как 4.1.6-Ubuntu.

Во всяком случае … Дело в том, что этот комментарий также утверждает, что если вы смонтируете раздел с помощью nobrl опция во время монтирования CIFS, консультативные блокировки не распространяются по сети.

Я не знаю, что это значит, я только знаю, что после редактирования моего / И т.д. / Fstab (см. ниже), чтобы включить эту опцию и перезапустить виртуальную машину, все работало.

//WindowsIP/SharedPartitionName /path/to/linux/folder cifs username=myusername,password=mypassword,rw,nobrl,uid=1000,gid=1000,nounix,iocharset=utf8,file_mode=0777,dir_mode=0777    0   0

Спасибо @AlejandroArbiza за терпение, и я надеюсь, что это поможет кому-то в будущем.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]