在 php.ini 中,我取消注释了
extension=sqlite3
以及将 extension_dir 定义为 ext 的行。在 PATH 中我添加了 PHP 安装文件夹,其中包含 libsqlite3.dll。
php -m
在 shell 中仍然不显示 sqlite3,并且任何使用 SQLite3 的 PHP 文件都会导致:
致命错误:未捕获错误:在 [php 文件] 中找不到类“SQLite3”
TL;DR:你有
php_sqlite3.dll
,对吧?
https://www.php.net/manual/en/sqlite3.installation.php
他们说:
默认启用 SQLite3 扩展。
并且(这是重要的部分):
Windows 用户必须启用
才能使用此扩展。该 DLL 包含在 PHP 的 Windows 发行版中。php_sqlite3.dll
并且(我猜你已经遵循了)
注意:自 PHP 7.4.0 起,Windows 上的附加设置
为了使此扩展工作,必须有 DLL 文件 适用于 Windows 系统
。有关如何操作的信息 请参阅题为“如何将我的 PHP 目录添加到PATH
”的常见问题解答 在 Windows 上”。虽然将 DLL 文件从 PHP 文件夹复制到 Windows系统目录也可以(因为系统目录是 系统默认的PATH
),不建议这样做。 这个 扩展要求以下文件位于PATH
中:PATH
。libsqlite3.dll
其他想法:
问题在于默认 Windows .ini 文件的命名方式
默认情况下,提供的 .ini 文件名为“php.ini-product”和“php.ini-development”。由于它们不以“.ini”结尾,因此不会被拾取并且任何编辑都会被忽略。
将其重命名为 php.ini(并重新启动)后,它终于起作用了。
事后看来,这完全是显而易见的,但我很长一段时间都没有注意到它
打开 php.ini 然后搜索“extension_dir”。对于 Windows,extension_dir =“ext”;对于 Linux,extension_dir =“./”。只需删除“;”即可根据您的操作系统,在extension_dir之前。这个extension_dir指向dll的。希望这能解决您的问题。
我假设您已经有可用的 Apache。例如在
c:/Apache24
中。
现在从 php.net 下载 Windows 版 php。
将 zip 文件解压到 c:\php
或任何其他位置,但我将使用 c:\php
作为示例。
将文件
c:\php\php.ini-development
重命名为 c:\php\php.ini
。
编辑
c:\php\php.ini
并取消注释行
extension=sqlite3
编辑
c:\Apache24\conf\httpd.conf
并在顶行添加:
PHPIniDir "C:/php"
LoadModule php_module "C:/php/php8apache2_4.dll"
AddType application/x-httpd-php .php
LoadFile "C:/php/php8ts.dll"
LoadFile "C:/php/libsqlite3.dll"
您可能需要将其更改为您的 php 和 apache 版本。
接下来找到行
DirectoryIndex index.html
并将其更改为
DirectoryIndex index.html index.php
最后启动或重新启动apache。