尝试使用以下代码从服务器读取数据库(通过桌面本身的localhost)。打开数据库文件以进行读取,但不打开插入记录。
FORM HTML FILE:
<html>
<form action="fruit_action.php" method="post">
<p>Enter name of fruit: <input type="text" name="sent_fruit" /></p>
<p><input type="submit" /></p>
</form>
</html>
行动PHP文件:
<html>
<?php
$fruit = $_POST['sent_fruit'] ;
echo "<p>$fruit</p>" ;
$db = new SQLite3("/home/iusr/fruit_prefs.sqlite") or die('Not able to open file.');
# PRINT OUT ITEMS IN DATABASE CORRECTLY:
$res = $db->query("select * from fruit_codes");
echo "<p>Fruits in database:";
while ($row = $res->fetchArray()) { echo "$row[name_fruit];"; }
echo "</p>";
# ABOVE WORKS WELL;
# ERROR ON FOLLOWING LINE:
$result = $db->exec('INSERT INTO fruit_codes (name_fruit) VALUES ($fruit); ') or die('Not able to insert record');
$db = null;
?>
</html>
输出:
mango
Fruits in database:apple;pear;orange;
Warning: SQLite3::exec(): unable to open database file in /var/www/htdocs/fruit_action.php on line 15
Not able to insert record
我在Linux工作。数据库文件位于主目录中,所有权限均已启用:
$ ls -l fruit*.sqlite
-rwxrwxrwx 1 iusr users 7168 Jun 9 19:15 fruit_prefs.sqlite
如何解决此错误?谢谢你的帮助。
答案 0 :(得分:2)
PHP(webserver用户)创建一些文件(日志)来执行SQLite3 :: exec(),因此它需要对您的数据库具有写权限。
尝试在该db文件上为PHP(webserver用户)提供写入权限。
更多信息http://php.net/manual/en/sqlite3.exec.php,请参阅用户提供的便笺。
另外https://www.daniweb.com/programming/web-development/threads/462894/unable-to-open-db-file
答案 1 :(得分:1)
我认为,PHP需要能够编写SQLite DB文件所在的目录,例如:对于journaling,在您的示例中似乎并非如此。尝试在应用程序docroot中找到数据库。