2010-04-24 2 views
0

J'ai installé SQLite sur mon système UNIX, et je prévois d'y accéder depuis PHP. Cependant, la base de données est créée dans le répertoire dans lequel je l'initialise, et si un script s'exécute dans un répertoire différent, une nouvelle base de données est créée dans le même répertoire.Comment puis-je stocker et accéder aux bases de données SQLite à partir d'un emplacement central?

Existe-t-il une option pour SQLite (ou les wrappers PHP) pour créer les bases de données à un emplacement, et ces bases de données sont-elles accessibles uniquement par leur nom en dehors de ce répertoire?

Idéalement, je voudrais pouvoir faire quelque chose comme $db=new SQLiteDatabase("db.test"); dans n'importe quel répertoire et faire référencer la même base de données, si cela a du sens.

Répondre

2

Pour utiliser toujours la même base de données (qui, après tout, est seulement un fichier), vous devrez utiliser un chemin absolu.

Au lieu d'utiliser 'db.test', qui est par rapport dans le répertoire courant, vous devrez utiliser quelque chose comme '/home/user/development/application/db.test'.
Notez le / au début du chemin, ce qui le rend absolu.


Bien sûr, à vous d'adapter ce à vos besoins :-)

Une bonne possibilité, de ne pas mettre un chemin entièrement codé en dur dans votre code, serait d'utiliser dirname(__FILE__) dans un de vos fichiers PHP, pour obtenir le chemin absolu complet du répertoire contenant ce fichier, et construire à partir de là, pour accéder au fichier de votre base de données.

+0

Super, merci. J'ai un singleton pour gérer une instance db et je peux y coller le chemin absolu et utiliser une variable globale ou quelque chose pour choisir la base de données. –

+0

De rien :-) ;; génial :-) –

1

Vous devez probablement stocker le chemin d'accès absolu quelque part dans un fichier de configuration qui fournit ces données partout où cela est nécessaire. Comme dit précédemment, vous pouvez utiliser dirname(__FILE__) pour obtenir le chemin absolu du répertoire dans lequel réside le script PHP contenant, de sorte que vous pouvez travailler à partir de là.

Questions connexes