PDO PHP SQLite3数据库连接常规错误14 - php

我有2个sqlite3.x数据库(来自iPhone),一个来自游戏应用程序,另一个是通讯录。

我在php conf中记录日志并显示错误“ on”。

使用PHP / PDO,我可以显示游戏数据库中的字段和值,包括我在结果页中捕获的图像斑点,并使用“ img src ='data:...”进行渲染。我在其他字段上使用htmlentities捕获plist二进制blob之类的内容。

我正在使用perl脚本来生成第一页,并且使用对sqlite3的系统调用来获取示例数据。该脚本正在通过作为cli参数提供的目录进行递归搜索。

我基本上是从数据库中的每个表中获取第一条记录(作为数据样本),为用户提供他们想进一步查询的字段的选项,并将这些选项传递给对目标表执行查询的表单处理程序,以及从所选列中获取数据。

但是...尝试连接到地址簿数据库时,出现“无法打开数据库”的一般错误。

我已经检查了数据库的权限,所有权,将它们都放在同一个目录中,使它们对世界完全开放..我能想到的所有内容,仍然很不愉快。

真正奇怪的是,我可以使用sqlite3从命令行非常愉快地查询所有数据库,但是使用PDO时会出现此错误。

整个过程如下:

($db and $strSQL vals passed from previous page)

$dbh = new PDO('sqlite:'.$db);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$result = $dbh->query($strSQL);

即使我从表中选择了一个简单的主键列,我也会收到错误,因此我可以肯定这不是数据处理问题。我什至尝试对Firefox和Chrome数据库使用相同的脚本……完全没有问题。

真的很感谢任何想法/指针/建议。这是我的头!

干杯。

参考方案

好吧...因此,尽管事实上数据库文件本身是完全打开的(chmod 777),但它们所在的目录必须是可写的!仍不确定不需要通过可写目录从命令行获取sqlite的方式,但是您肯定需要PHP / PDO查询。

未显示结果的数据库设置了预写日志记录(WAL)位(文件头的字节18和19),并且该目录必须是可写的,以便SQLite可以创建要查询的数据库的WAL版本。对于非WAL数据库,字节18和19设置为0x01和0x01,对于启用WAL的数据库设置为0x02 0x02。

是什么让它消失了?...当我重新运行查询并碰巧将数据库移入数据库时​​,突然出现了地址簿数据库文件的副本,在文件名的末尾附加了“ -wal”和“ -shm”用于测试的可写目录。

去搞清楚!

PS ..
有趣的是,每次更改日志模式(使用db查询“ pragma journal_mode = [wal | off]”)时,位于字节94和95的2字节计数器将递增1。在模式之间进行切换时检查db的哈希值时,请注意这一点,并且无法获得相同的2个哈希值。我在数据库之前和之后进行了xxd处理,将输出通过管道传输到txt文件,然后将2个txt文件进行比较...然后有这些计数器字节。

SQLite PDO绑定不起作用? - php

我觉得我对此一无所知。我有三个简单的表。一个用户表,一个角色表和一个role_user表,该表以多对多关系连接用户和角色。对于用户角色,我有以下代码:$query = $pdo->prepare('select roles.* from roles inner join role_user on roles.id = role_user.ro…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

php Singleton类实例将在多个会话中保留吗? - php

举一个简单的例子,如果我想计算一个不使用磁盘存储的脚本的命中次数,我可以使用静态类成员来执行此操作吗?用户1:<?php $test = Example::singleton(); $test->visits++; ?> 用户2:<?php $test = Example::singleton(); $test->visits+…

PHP:将字符串拆分为字母和数字部分的最佳方法 - php

我有几个格式的字符串AA11 AAAAAA1111111 AA1111111 分离字符串的字母和数字部分的最佳方法(最有效)? 参考方案 如果它们都是一系列字母,然后是一系列数字,并且没有非字母数字字符,那么sscanf()可能比regexp更有效$example = 'AAA11111'; list($alpha,$numeric) =…

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…