How to load sqlite extension in PDO?

后端 未结 3 2207
萌比男神i
萌比男神i 2020-12-28 21:14

First, I want to inform about the case to avoid the misunderstanding.

By sqlite extension, I mention Sqlite\'s extension like FTS, not PHP\'s sqlite extension.

相关标签:
3条回答
  • 2020-12-28 21:20

    No way present now except workaround mentioned above. If you would want to check progress somewhere in the future, there's an issue on PHP bugtracker.

    0 讨论(0)
  • 2020-12-28 21:24

    I have implemented a library with a solution for this problem for PHP 7.4+ which does not involve recompiling the PDO driver. In short, it uses PHP's FFI extension and Z-Engine (which reads PHP's internal memory structures using FFI) to make a direct call to the SQLite C API. You can find more detailed background information in this blog post. I would not recommend this solution in production yet, but it could be a feasible workaround for test or development workflows.

    0 讨论(0)
  • 2020-12-28 21:25

    could not find a compiler flag and we have solved it with a quick'n dirty hack in pdo_sqlite extension. patched sqlite_driver.c with sqlite3_enable_load_extension() from sqlite3 API.

    --- php-5.3.7.old/ext/pdo_sqlite/sqlite_driver.c    2012-01-06 11:04:44.000000000 -0500
    +++ sqlite_driver.c 2012-01-06 08:16:58.000000000 -0500
    @@ -718,6 +718,8 @@
            goto cleanup;
        }
     
    +   sqlite3_enable_load_extension(H->db, 1);
    +
        if (PG(safe_mode) || (PG(open_basedir) && *PG(open_basedir))) {
            sqlite3_set_authorizer(H->db, authorizer, NULL);
        }
    
    0 讨论(0)
提交回复
热议问题