PHP PDO sqlite:无法打开数据库

PHP PDO sqlite:无法打开数据库,php,jquery,sqlite,pdo,Php,Jquery,Sqlite,Pdo,我用php开发了一个webapp,使用sqlite将数据存储在数据库中。正如在互联网上看到的,我使用PDO而不是SQLITE3类。我执行了internet上显示的所有步骤以避免此错误消息,但仍然显示: SQLSTATE[HY000][14]无法打开数据库文件 周期性任务每30秒运行一次,以获取表中的条目数。此任务由Javascript/Jquery触发。在普通的php文件上,我使用PDO没有任何问题。但是将它与Javascript/Jquery结合使用,我收到了上面的消息 我已经将整个路径和数据

我用php开发了一个webapp,使用sqlite将数据存储在数据库中。正如在互联网上看到的,我使用PDO而不是SQLITE3类。我执行了internet上显示的所有步骤以避免此错误消息,但仍然显示:

SQLSTATE[HY000][14]无法打开数据库文件

周期性任务每30秒运行一次,以获取表中的条目数。此任务由Javascript/Jquery触发。在普通的php文件上,我使用PDO没有任何问题。但是将它与Javascript/Jquery结合使用,我收到了上面的消息

我已经将整个路径和数据库设置为Web服务器的user/group和chmod 0777

我自己编写的数据库类被创建并存储在会话变量中,以避免在网页生命周期中创建和销毁

此函数连接到数据库(此函数和下一个函数在同一类中):

此函数正在执行查询:

javascript/jquery函数运行良好,并使用setTimeoutfunction执行。 然而,我不知道如何防止或消除这个问题。我怎样才能解决这个问题

我的PHP ini文件包含以下关于sqlite和pdo的条目:

[sqlite]                                                                                       
; http://php.net/sqlite.assoc-case                                                             
;sqlite.assoc_case = 0                                                                         

[sqlite3]                                                                                      
;sqlite3.extension_dir =  
[Pdo]                                                                           
; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off"  
; http://php.net/pdo-odbc.connection-pooling                                    
;pdo_odbc.connection_pooling=strict                                             

;pdo_odbc.db2_instance_name                                                     

[Pdo_mysql]                                                                     
; If mysqlnd is used: Number of cache slots for the internal result set cache   
; http://php.net/pdo_mysql.cache_size                                           
pdo_mysql.cache_size=2000                                                       

; Default socket name for local MySQL connects.  If empty, uses the built-in    
; MySQL defaults.                                                               
; http://php.net/pdo_mysql.default-socket                                       
pdo_mysql.default_socket=  

是否需要任何sqlite pdo设置?

我解决了这个问题。不幸的是,错误消息令人困惑,因为PHP没有找到该文件。
请始终使用绝对路径,以避免出现此错误,即使权限、用户和组设置正确。

很抱歉,我的答案完全错误,因此我已删除。你说得对,抱歉,连接必须关闭。是否有可能同时运行多个js?或者查询时间太长?不,事实上不是。在后台,每30秒只有一个javascript定期运行。我解决了这个问题。不幸的是,错误消息令人困惑。因为我没有使用绝对路径,PHP无法找到数据库文件。令人困惑但实际上有意义,这就是它无法读取它的原因。:)你应该添加你找到的解决方案作为答案,并接受它。同意,我试图
chown
到www数据,但我意识到我只是忘记了更改应用程序中指定的db路径,因为我已经从MacOS迁移到Ubuntu
function getNumberofEntriesinTable() {

    try {
        if (is_null($this->db)) {
            if ($this->connectdb() < 0) {
                return -1;
            }
        }

        $statement = "select count(*) from table;";

        $res = $this->db->query($statement);
        $res = $res->fetch();
        $res =  $res['count(*)'];
        $this->db = null;
        return $res;
    } catch (PDOException $e) {
        syslog(LOG_ERROR,$e->getMessage());
        return -1;
    }
 }
function getData(){
    $.post("php/getdatafromdb.php",{action: 'getdata'},function(data){
        console.log(data);
    }
    setTimeout(function () {getData();},30000);
}
[sqlite]                                                                                       
; http://php.net/sqlite.assoc-case                                                             
;sqlite.assoc_case = 0                                                                         

[sqlite3]                                                                                      
;sqlite3.extension_dir =  
[Pdo]                                                                           
; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off"  
; http://php.net/pdo-odbc.connection-pooling                                    
;pdo_odbc.connection_pooling=strict                                             

;pdo_odbc.db2_instance_name                                                     

[Pdo_mysql]                                                                     
; If mysqlnd is used: Number of cache slots for the internal result set cache   
; http://php.net/pdo_mysql.cache_size                                           
pdo_mysql.cache_size=2000                                                       

; Default socket name for local MySQL connects.  If empty, uses the built-in    
; MySQL defaults.                                                               
; http://php.net/pdo_mysql.default-socket                                       
pdo_mysql.default_socket=