2009-09-28 10 views
18

Estoy tratando de insertar datos en mi base de datos SQlite3 (esto funciona a través de la línea de comandos). Le di al archivo data1.db 777 permisos y todavía dice que no puede abrir el archivo.No se puede escribir en un archivo de base de datos chmod 777 en SQlite3 a través de php 5.3.0

me sale este error:

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

Utilizando este código:

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

Pero lo extraño es que puedo leer de la base de datos: (esto funciona)

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

Estoy ejecutando PHP 5.3.0

+0

Espacio en el dispositivo? – LiraNuna

+2

No debería necesitar permiso de ejecución en la base de datos, no es un script o programa ejecutable. Normalmente debería evitar el acceso público de escritura, lo que significa que no le importa quién destruye su base de datos en cualquier momento (porque cualquiera puede hacerlo si el archivo tiene permiso de escritura pública). Por lo tanto, como máximo deberías usar 666, y preferiblemente 664 o más permisos estrictos. –

+0

Sí, lo sé, solo lo estaba probando para ver si eso era culpa o no. (afortunadamente no fue así) Cambié sus permisos a 644 y lo moví fuera del directorio www. – Mint

Respuesta

2

Trate de añadir el usuario sqlite al grupo que posee los directorios/var/www, o usuario chown -R: manual de usuario/var/www /, el directorio tiene que ser escribible por el sqlite usuario.

+1

Cambiar recursivamente la propiedad del directorio y de todos los archivos que contiene podría ser una muy mala idea si todo lo que se necesita es dar acceso de escritura a la cuenta de usuario del servidor web al directorio y un archivo en él. –

1

Preste atención, si ejecuta PHP con CLI, debe usar "sudo -u www-data php script.php" para que PHP pueda escribir en sqlite.

Cuestiones relacionadas