2009-09-28 11 views
18

Sto provando ad inserire dati nel mio database SQlite3 (questo funziona tramite la riga di comando). Ho dato i permessi del file data1.db 777 e ancora dice che non è in grado di aprire il file.Impossibile scrivere su un file di database chmod 777 su SQlite3 via php 5.3.0

ottengo questo errore:

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

utilizzando questo codice:

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

Ma la cosa strana è che posso leggere dal database: (questo funziona)

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

Sono in esecuzione PHP 5.3.0

+0

Spazio sul dispositivo? – LiraNuna

+2

Non è necessario il permesso di esecuzione sul database - non è uno script o un programma eseguibile. Normalmente dovresti evitare l'accesso pubblico in scrittura - questo significa che non ti interessa chi distrugge il tuo database in qualsiasi momento (perché chiunque può farlo se il file ha i permessi di scrittura pubblici). Quindi, al massimo, dovresti usare 666 e preferibilmente 664 o più permessi rigidi. –

+0

Sì, lo so, stavo solo testando per vedere se era colpa nostra o no. (per fortuna non lo era). Modificato le sue autorizzazioni su 644 e spostato fuori dalla directory www. – Mint

risposta

2

Prova ad aggiungere l'utente SQLite per il gruppo che possiede le directory/var/www, o utente -R chown manuale: l'utente/var/www /, la directory deve essere scrivibile dal sqlite utente.

+1

Cambiare in modo ricorsivo la proprietà della directory e tutti i file sottostanti sarebbe probabilmente una pessima idea se tutto ciò che serve è dare l'accesso in scrittura all'account utente del server Web alla directory e un file in esso. –

1

Prestare attenzione, se si esegue PHP con CLI, è necessario utilizzare "sudo -u www-data php script.php" in modo che PHP possa scrivere su sqlite.

Problemi correlati