无法通过php 5.3.0写入chmod 777数据库文件到SQlite3

23

我正在尝试将数据插入到我的SQlite3数据库中(通过命令行可行)。我已经为data1.db文件赋予了777权限,但仍然显示无法打开文件。

我收到以下错误信息:

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

使用以下代码:

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

但奇怪的是,我可以从数据库中读取数据:(这个正常运行)

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

我正在运行 PHP 5.3.0


2
你不需要在数据库上执行权限 - 它不是可执行脚本或程序。通常应避免公共写入访问 - 这意味着您不关心任何人何时破坏您的数据库(因为如果文件具有公共写入权限,任何人都可以这样做)。因此,最多应使用666,最好是664或更严格的权限。 - Jonathan Leffler
1
是的,我知道,我只是在测试它,看看那是否是故障所在(幸运的是不是)。 将其权限更改回644并将其移出www目录。 - Mint
3个回答

72

1
sudo chown www-data. . - Евгений Смирнов

2
尝试将sqlite用户添加到拥有/var/www目录的组中,或手动运行chown -R user:user /var/www/命令,该目录需要可被sqlite用户写入。

1
如果只需要将Web服务器用户帐户对目录和其中一个文件具有写访问权限,那么递归更改目录及其下所有文件的所有权可能是一个非常糟糕的想法。 - user

0
请注意,如果您使用CLI运行PHP,则必须使用“sudo -u www-data php script.php”,以便PHP可以在sqlite上进行写入。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接