ubuntuusers.de

PHP SQLite Nachfrage

Status: Gelöst | Ubuntu-Version: Ubuntu
Antworten |

airjump

Anmeldungsdatum:
8. März 2006

Beiträge: 32

Wohnort: Essen

Hallo Forum,

wer kennt sich ein bischen mit PHP apache2 und sqlite aus?
Ich habe den apche2, php5 und sqlite installiert.
Alle drei Dinge laufen und funktionieren.
Ich kann sogar mit php meine DB auslesen nur nichts reinschreiben.
Es kommt diese Fehlermeldung:

Warning: sqlite_query() [function.sqlite-query]: unable to open database file in /var/www/php/db-eingabe.php on line 18
Error in query: unable to open database file

Wo muss ich was in den rechten ändern oder umstellen, dass in die DB was zurückgeschrieben werden kann?
Vermutlich muss ich in der apache2.conf noch sagen, dass man in die datei library.db was schreiben darf.
Oder muss ich die Rechte, Besitzer oder Gruppe anpassen.

Danke für Eure Hilfe schon mal.

Gruß Markus

<html> 
<head><basefont face="Arial"></head> 
<body> 
<?php 
// set path of database file 
$db = $_SERVER['DOCUMENT_ROOT']."library.db"; 

// open database file 
$handle = sqlite_open($db) or die("Could not open database"); 

// check to see if the form was submitted with a new record 
if (isset($_POST['submit'])) { 
    // make sure both title and author are present 
    if (!empty($_POST['title']) && !empty($_POST['author'])) { 
        // generate INSERT query 
        $insQuery = "INSERT INTO books (title, author) VALUES (\"".sqlite_escape_string($_POST['title'])."\", \"".sqlite_escape_string($_POST['author'])."\")"; 
        // execute query 
        $insResult = sqlite_query($handle, $insQuery) or die("Error in query: ".sqlite_error_string(sqlite_last_error($handle))); 
        // print success message 
        echo "<i>Record successfully inserted!</i><p />"; 
    } 
    else { 
        // missing data 
        // display error message 
        echo "<i>Incomplete form input. Record not inserted!</i><p />"; 
    } 
} 

// now display all the records in the database 
// generate SELECT query string 
$query = "SELECT * FROM books"; 

// execute query 
$result = sqlite_query($handle, $query) or die("Error in query: ".sqlite_error_string(sqlite_last_error($handle))); 

// if rows exist 
if (sqlite_num_rows($result) > 0) { 
// get each row as an array 
    // print values 
    echo "<table cellpadding=10 border=1>"; 
    while($row = sqlite_fetch_array($result)) { 
        echo "<tr>"; 
        echo "<td>".$row[0]."</td>"; 
        echo "<td>".$row[1]."</td>"; 
        echo "<td>".$row[2]."</td>"; 
        echo "</tr>"; 
    } 
    echo "</table>"; 
} 

// all done 
// close database file 
sqlite_close($handle); 
?> 
<p> 
<h2>Enter new record:</h2> 
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
Book title: <input type="text" name="title"> 
<br /> 
Author: <input type="text" name="author"> 
<br /> 
<input type="submit" name="submit" value="Save"> 
</form> 

</body> 
</html> 

falken

Avatar von falken

Anmeldungsdatum:
22. März 2006

Beiträge: Zähle...

Wohnort: Berlin

Der Apacheuser muss Schreibrechte auf der Datei haben, wenn ich mich gerade nicht täusche. Ansonsten wird das nichts oO

airjump

(Themenstarter)

Anmeldungsdatum:
8. März 2006

Beiträge: 32

Wohnort: Essen

Hallo falken,

geht leider nicht.
Habe mit sudo chown und chgrp auf den apache user die db Datei geändert.
Auch die Rechte habe ich allen gegeben chmod 777.

Leider geht es nicht.

falken hat geschrieben:

Der Apacheuser muss Schreibrechte auf der Datei haben, wenn ich mich gerade nicht täusche. Ansonsten wird das nichts oO

Das was so komisch ist, er kann die DB öffnen aber nichts reinschreiben.

Gruß Markus

falken

Avatar von falken

Anmeldungsdatum:
22. März 2006

Beiträge: 8

Wohnort: Berlin

Zwei Dinge:

Probier mal im sqlite_open die Rechte mit zu geben, also sqlite_open($db,0666).

Wenn das nicht klappt:

Since sqlite uses a journal to do updates and inserts (and creates it on the fly), you ALSO must have write permissions set for the web server to write in the same DIRECTORY as the database file.

Visor1999

Anmeldungsdatum:
8. Juni 2006

Beiträge: Zähle...

Wohnort: Lüneburg

falken hat geschrieben:

Wenn das nicht klappt:

Since sqlite uses a journal to do updates and inserts (and creates it on the fly), you ALSO must have write permissions set for the web server to write in the same DIRECTORY as the database file.

Vielen Dank! Hatte dieses Problem auch und habe mich die ganze Zeit gewundert, warum ich die Datenbank zwar lesen, aber nichts schreiben konnte, und nun weiß ich es. Wieder was gelernt!

Wo ist denn die Information her, dass das Directory schreibbar sein muss? Da wäre ich nicht drauf gekommen, finde dazu auch nichts in der PHP-Doku (und die SQLite-Website ist so unübersichtlich, dass ich nichtmal weiß, wo ich dort nach sowas gucken würde).

Danke danke danke, viele Grüße
Stefan

Antworten |