2009-09-28 6 views
18

J'essaie d'insérer des données dans ma base de données SQlite3 (cela fonctionne via la ligne de commande). J'ai donné le droit au fichier data1.db 777 et il dit qu'il est incapable d'ouvrir le fichier.Impossible d'écrire dans un fichier de base de données chmod 777 sur SQlite3 via php 5.3.0

Je reçois cette erreur:

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

En utilisant ce code:

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

Mais la chose étrange est que je peux lire à partir de la base de données: (cela fonctionne)

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

Je cours PHP 5.3.0

+0

Espace sur l'appareil? – LiraNuna

+2

Vous ne devriez pas avoir besoin d'une autorisation d'exécution sur la base de données - ce n'est pas un script ou un programme exécutable. Vous devriez normalement éviter l'accès public en écriture - cela signifie que vous ne vous souciez pas de savoir qui détruit votre base de données à tout moment (parce que n'importe qui peut le faire si le fichier a une autorisation d'écriture publique). Donc, tout au plus, vous devriez utiliser 666, et de préférence 664 ou plus d'autorisations strictes. –

+0

Oui, je le savais, je le testais juste pour voir si c'était la faute ou non. (heureusement, ça ne l'était pas). Modifié ses autorisations en 644 et l'a déplacé en dehors du répertoire www. – Mint

Répondre

2

Essayez d'ajouter l'utilisateur sqlite au groupe qui possède les répertoires/var/www, ou manuellement chown utilisateur R: utilisateur/var/www /, le répertoire doit être inscriptible par le sqlite utilisateur.

+1

La modification récursive de la propriété du répertoire et de tous les fichiers qu'il contient serait probablement une très mauvaise idée si tout ce qui est nécessaire est de donner au compte utilisateur du serveur Web un accès en écriture au répertoire et à un fichier. –

1

Attention, si vous utilisez PHP avec CLI, vous devez utiliser "sudo -u www-data php script.php" pour que PHP puisse écrire sur le sqlite.

Questions connexes