Portál AbcLinuxu, 25. července 2025 14:12


Dotaz: PHP SQLite

4.12.2015 11:15 Jirka
PHP SQLite
Přečteno: 435×
Odpovědět | Admin
Ahoj, mám takový (snad) drobný problém, ale nějak to nemohu vyřešit. Z command line jsem založil SQLite databázi, vytvořil primitivní tabulku a do ní vložil jeden záznam. V PHP skriptu se do databáze dostanu a záznam si mohu zobrazit. Práva databáze jsou
-rw-rw-r--  wwwrun users  testik.sqlite3
Jde o to, aby tam mohl zapisovat uživatel i webový server (apache2). Ale z PHP skriptu nemohu nic uložit, jenom se dostanu na již uložený záznam. INSERT skončí chybou "General error: 14 unable to open database file", ale SELECT se provede správně.
$db = new PDO('sqlite:/path/to/testik.sqlite3');
$db->exec("INSERT INTO tbl1 (pozdrav) VALUES ('ahoj')");
$result = $db->query('SELECT pozdrav FROM tbl1;');
foreach ($result as $row) {
    echo $row['pozdrav'] . "\n";
}
Asi to je tím pátkem, ale nemohu přijít na to, kde dělám chybu. Můžete pomoci?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

xxxxxx avatar 4.12.2015 12:14 xxxxxx | skóre: 23
Rozbalit Rozbalit vše Re: PHP SQLite
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mrkni sem. Zkusil bych nastavit stejná práva na tu složku, kde je DB, jak se radí na SO. Enforcing SELinux ti to nejspíš taky nedovolí. A pak bych ještě zkontroloval, jestli všichni uživatelé, co mají mít přístup k té DB, jsou ve skupině users.
4.12.2015 13:14 Jirka
Rozbalit Rozbalit vše Re: PHP SQLite
Ano, to je ono: i adresář ve kterém se databáze nachází musí mít práva na zápis pro apache. Super, děkuji!
4.12.2015 13:21 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: PHP SQLite
Apache do toho adresáře nesmí mít přístup, aby se ta databáze nedala stáhnout jako soubor.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
4.12.2015 13:19 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: PHP SQLite
Odpovědět | | Sbalit | Link | Blokovat | Admin
Řeším to tak, že založím adresář .htdata (tím se stane neviditelným pro Apache, ale viditelným pro PHP) a dám mu práva 700 nebo 707 podle typu přístupu PHP (FastCGI vs. modul). V takovém adresáři pak PHP může v klidu pracovat s SQLite dle libosti.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.