Pytanie Nie można pisać do pliku bazy danych chmod 777 na SQlite3 przez php 5.3.0


Próbuję wstawić dane do mojej bazy danych SQlite3 (działa to za pomocą wiersza poleceń). Nadałem plikowi data1.db uprawnienia 777 i wciąż jest napisane, że nie można otworzyć pliku.

Otrzymuję ten błąd:

Warning: SQLite3::exec() [sqlite3.exec]: unable to open database file in /var/www/test.php on line 3

Korzystanie z tego kodu:

$db = new SQLite3('./data1.db');
$db->exec("INSERT INTO table1 (fileName) VALUES ('test.txt')");

Ale dziwne jest to, że mogę odczytać z bazy danych: (to działa)

print_r($db->querySingle('SELECT fileName FROM table1', true));

Używam PHP 5.3.0


19
2017-09-28 05:16


pochodzenie


Miejsce na urządzeniu? - LiraNuna
Nie powinieneś potrzebować uprawnień wykonywania w bazie danych - nie jest to skrypt wykonywalny lub program. Powinieneś normalnie unikać publicznego dostępu do zapisu - to znaczy, że nie obchodzi cię, kto niszczy twoją bazę danych w dowolnym momencie (ponieważ każdy może to zrobić, jeśli plik ma publiczne uprawnienia do zapisu). Tak więc najwyżej powinieneś użyć 666, a najlepiej 664 lub więcej rygorystycznych uprawnień. - Jonathan Leffler
Tak, wiem, właśnie testowałem, żeby sprawdzić, czy to wina, czy nie. (na szczęście nie było). Zmieniono uprawnienia do 644 i przeniesiono je poza katalog www. - Mint


Odpowiedzi:


Folder zawierający plik SQLite musi być zapisywany przez użytkownika WWW, jeśli chcesz wprowadzić do niego zmiany. Nie wystarczy, że plik .db jest zapisywalny.

Widzieć Dlaczego DBD :: SQLite nie można wstawić do bazy danych za pomocą mojego skryptu Perl CGI?


61
2017-09-28 05:24



sudo chown www-data. . - Евгений Смирнов


Spróbuj dodać użytkownika sqlite do grupy, która jest właścicielem katalogów / var / www lub ręcznie chown -R użytkownik: użytkownik / var / www /, katalog musi być zapisywalny przez użytkownika sqlite.


2
2017-09-28 05:26



Rekursywna zmiana właściciela katalogu i wszystkich plików w jego ramach prawdopodobnie byłby bardzo złym pomysłem, gdyby wszystko, co jest potrzebne, dałoby kontu użytkownika serwera internetowego dostęp do katalogu i jednego pliku w nim. - Michael Kjörling


Zwróć uwagę, jeśli uruchomisz PHP z CLI, musisz użyć "sudo -u www-data php script.php", aby PHP mógł pisać na sqlite.


1
2017-07-30 17:33