无法从 js axios.get 请求打开 sqlite 数据库文件

Unable to open sqlite DB file from js axios.get request

无法从 js axios.get 请求打开 sqlite DB 文件:(console.log outputs exception message)。该请求可能会调用我的 PHP 控制器以从数据库中获取 select 数据,并且 return 它已 json 编码。

另一方面,PHP contoller 使它的工作很好:screenshot

通过这种方式,我尝试从 Vue 表单发送一个 axios 请求:screenshot 或代码:

Vue.createApp({
    data: () => ({
        processors:'',
        memory:'',
        drives:'',
        motherboards:'',
        cases:'',
    }),
    methods:{
        fetchProcessors:function (){
            axios.get('/src/controllers/getProcessors.php').then(
                (response) => {
                    this.processors = response.data;
                    console.log(response);
                });
        }
    },
    created:function (){
        console.log('vue is ok');
        this.fetchProcessors();
    }
}).mount(".js-form");

PHP控制器代码:

<?php

require_once __DIR__ . '/../../vendor/autoload.php';
use Doctrine\DBAL;

$connectionParams = [
    'url' => 'sqlite3:///db/calc_db.sqlite3'
];


try {
    $conn = DBAL\DriverManager::getConnection($connectionParams);
    $data = $conn->fetchAllAssociative('SELECT name, cost FROM processors');
    echo json_encode($data, JSON_THROW_ON_ERROR);
} catch (Exception $e) {
    echo $e->getMessage();
}

我试过:


full stack trace

问题出在 'path' 参数中:我已经从项目根目录(工作目录)启动了我的脚本,因此正确构建了我的数据库的相对路径。

在 web-server WD 是一条路径,我在请求中给出(控制器目录),因此我的数据库的相对路径构建不正确。

我已经像这样替换了路径参数,一切正常:

$connectionParams = [
    'path' => dirname(__DIR__, 2) . '/db/calc_db.sqlite3',
    'driver' => 'pdo_sqlite'
];