我在 docker 中使用 nginxtrafex/php-nginx
但我沒有讓 SQLite 作業。以下php代碼
<?php
$db = new SQLite3('/var/private/anmeldungen.db');
$db->close();
拋出這個錯誤 [error] 9#9: *33 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught Error: Class "SQLite3" not found in /var/www/html/phpinfo.php:3
我正在使用 dockerfile 安裝 sqlite 包:
FROM trafex/php-nginx:latest
USER root
RUN apk add php8-pdo_sqlite
USER nobody
在 PHPInfo 中,我可以看到包已加載:

有沒有人有想法?
uj5u.com熱心網友回復:
你的包是錯誤的,PDO 是 PHP 資料物件,它是一個更高層,旨在能夠使用任何較低的資料庫協議,如 SQLite、MySQL、Postgres...,所以從長遠來看,通過 PDO 實作可能對你有很大幫助,如果你想切換到另一個資料庫而不改變你的源代碼的太多(可能有一些不兼容的功能,但不是很多)。
要通過 PDO 初始化 SQLite,您必須這樣做:
$dbh = new PDO('sqlite:/tmp/foo.db');
您可以在https://www.php.net/manual/en/ref.pdo-sqlite.php閱讀更多相關資訊。
如果您想堅持使用本機 SQLite(使用您的 SQLite3 類),您將必須安裝包php8-sqlite3而不是php8-pdo_sqlite3
apk add php8-sqlite3
這將適用于您當前的代碼。
uj5u.com熱心網友回復:
SQLite 包含在 PHP 中,您必須在 php.ini 檔案中取消對它的注釋。但首先你必須卸載你安裝的那個,否則 PHP 會抱怨有兩個。我遇到了同樣的問題,盡管不在 Docker 容器內。PHP 同意安裝了 SQLite,但 CLI 不會使用它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/311418.html
