2010-02-09 3 views
0

J'écris une petite application qui doit avoir un processus d'installation super facile. La première version utilisait un fichier csv au lieu d'une base de données, donc la priorité n ° 1 pour v2 devient sqlite à la place. J'ai beaucoup utilisé sqlite avec Ruby, et j'adore ça, mais c'est la première fois que je l'utilise avec PHP. Fondamentalement, pour que SQlite3 puisse être inséré dans la base de données, je devais faire en sorte que le fichier database.sqlite3 et le dossier le contenant soient la propriété de l'utilisateur apache. De la lecture des docs, cela semble normal. Cependant, apache ne fonctionnera pas toujours comme le même utilisateur. Ici, c'est "http", mais je sais que sur Ubuntu c'est "www-data", n'est-ce pas?Sqlite3, les utilisateurs Apache, et les installations faciles

Alors, y a-t-il un bon moyen de détecter le nom d'utilisateur qu'utilise Apache, et de le changer, ou est-ce que je m'y trompe? Il doit être quelque chose que je peux juste mettre dans le script d'installation, car les gens qui utilisent cette application ne savent pas ou ne se soucient pas de petits détails comme celui-ci.

Merci.

Répondre

1

Je crois que vous y allez du mauvais côté: vous avez besoin de la base de données SQLite pour pouvoir être écrite par le script PHP, si je comprends bien, et cela pourrait ne pas être le même que l'utilisateur Apache. Si PHP est installé en tant que module Apache, il héritera de l'utilisateur Apache, mais un cas beaucoup plus commun sur les serveurs partagés est d'avoir PHP configuré en CGI sous suphp ou phpsuexec, donc les scripts s'exécutent avec les permissions de l'utilisateur lui-même.

Je vous suggère d'écrire un script install.php pour créer le dossier et la base de données, donc les deux hériteront des permissions du script, quel que soit l'utilisateur. Regardez dans le manuel pour mkdir() et sqlite_open(). Si rien d'autre ne fonctionne, il y a toujours chmod().

Comme vous citez spécifiquement SQLite v. 3, vous pouvez vérifier la version du serveur avec phpversion(); en PHP 5.3 sqlite_ * fonctions fonctionnent avec la version 3, PHP 5.2 et ci-dessous comprennent la version 2 à la place. Pour utiliser la version 3 en PHP 5.2, vous devez utiliser pdo_sqlite.

+0

Génial, merci pour les conseils. Je me contentais de lire ce que j'ai lu dans Google mon message d'erreur. –

Questions connexes