我有一个sqlite3数据库〜/ dir / subdir / foo.sqldb,其所有者/组me / me的权限为777(子目录的权限为775)
我有一个由我/我执行的命令行PHP脚本,该脚本打开该数据库的读/写操作并向其写入数据,然后关闭该数据库并退出。
我有一个网页运行在同一台机器http://localhost/~me/webpage.php上的Apache服务器上,该网页以只读方式打开数据库以拉出要显示的信息,然后再次将其关闭。
问题在于,当数据库日志模式为WAL(pragma journal_mode = wal)时,在命令行程序完成后,网页将打开数据库,但无法在该数据库的表上运行选择
apache2错误日志显示:
无法选择某些数据无法准备声明:8,尝试编写只读数据库,引用:http://localhost/webpage.php
这是在命令行脚本执行过程中创建并删除-wal文件之后发生的,因此我不认为-wal文件是原因(无论如何我/我拥有-wal文件,并且其权限为777) )
问题不是暂时的,到目前为止,我发现的唯一解决方案是在命令行上以me / me的身份运行我的webpage.php,这时通过Apache运行的网页可以在数据库上发布选择内容再次。
如果我以其他用户的身份在命令行上运行webpage.php,则会看到相同的错误
PHP致命错误:未捕获的异常:无法准备声明:8,尝试编写只读数据库
更改网页脚本以打开SQLITE3_OPEN_READWRITE没什么区别。
但是,如果我将日志记录模式更改为“删除”,则完全没有问题,所以我有一个问题……但是我想了解这是什么原因,如果可能的话脚本与日志模式无关。
谢谢
linux:Ubuntu 16.04 LTS PHP 7.0.32-0 Ubuntu的0.16.04.1 SQLite3 3.22.0 Apache / 2.4.18(Ubuntu)