php - sqlite3 和 pdo_sqlite 未加载到 php apache2 localhost 中,但加载到 php cmd 窗口中

标签 php windows apache sqlite

问题描述

我使用 Windows 10 操作系统。我已在 C:/Apache24 中安装了 Apache 2.4,在 C:/php7 中安装了 PHP7.4.1。在 Apache 的配置文件 httpd.conf 中,我附加了以下内容

    LoadModule php7_module "c:/php7/php7apache2_4.dll"
    #<FilesMatch \.php$>
    #   SetHandler application/x-httpd-php
    #</FilesMatch>
    AddType application/x-httpd-php .php
    PHPIniDir "C:/php7" 

我还通过以下方式修改了php的php.ini文件:

     extension_dir = C:\php7\ext
     extension=bz2
     extension=curl
     ;extension=ffi
     extension=fileinfo
     extension=gd2
     extension=gettext
     extension=gmp
     extension=intl
     extension=imap
     ;extension=ldap
     extension=mbstring
     extension=exif      ; Must be after mbstring as it depends on it
     extension=mysqli
     ;extension=oci8_12c  ; Use with Oracle Database 12c Instant Client
     ;extension=odbc
     extension=openssl
     ;extension=pdo_firebird
     extension=pdo_mysql
     ;extension=pdo_oci
     extension=pdo_odbc
     extension=pdo_pgsql
     extension=pdo_sqlite
     extension=pgsql
     extension=shmop
     ; The MIBS data available in the PHP distribution must be installed.
     ; See http://www.php.net/manual/en/snmp.installation.php
     ;extension=snmp
     extension=soap
     extension=sockets
     ;extension=sodium
     extension=sqlite3
     extension=tidy
     extension=xmlrpc
     extension=xsl

并且仍在 php.ini 中我也进行了修改

     [sqlite3]
     ; Directory pointing to SQLite3 extensions
     ; http://php.net/sqlite3.extension-dir
     sqlite3.extension_dir = C:\Apache24\htdocs

然后我重启了apache几十次,PC也重启了一次。

问题:

我制作了一个“index.php”文件并将其放置在“c:/apache24/htdocs”中,其中包含以下文本:

    <?php phpinfo(); ?>

在 Chrome Web 浏览器中转到“localhost”,我看到了 PHP 信息文件。但是,---> 它没有启用 sqlite3 或 pdo_sqlite <---。但是,在命令窗口中运行“php -m”,它显示 sqlite3 和 pdo_sqlite 已加载。此外,在 localhost PHP 信息中,它使用在“C:\php7\php.ini”处找到的已加载配置文件,这确实是正确的。

我没有其他想法,为什么 sqlite3 或 pdo_sqlite 在 apache2 中不可见,但在 com 窗口中可见,特别是因为它使用相同的 php.ini 文件。

更新

Apache24\logs 检查“error.log”文件,我可以看到以下警告:

PHP警告:PHP启动:无法加载动态库'pdo_sqlite'(尝试过:C:\\php7\\ext\\pdo_sqlite(找不到指定的模块。),C:\\php7\\ext\\php_pdo_sqlite.dll(找不到指定的模块。))位于第 0 行的未知中 但是,使用 Windows 10 资源管理器可以在 c:\php7\ext 中看到 php_pdo_sqlite.dll,但另一方面 C:\\php7\\ext 不是 Windows 资源管理器的有效路径。我不知道双反斜杠是否仅用于打印,或者实际上它在该路径中搜索。然而 cmd 不受双反斜杠的困扰。我真的不知道该怎么想!

最佳答案

将 Apache 升级到 2.4.41 + 将以下内容添加到我的 httpd.conf 解决了我的问题。

# PHP7

LoadModule php7_module "C:/Php/php7apache2_4.dll"
AddHandler application/x-httpd-php .php
AddHandler application/x-httpd-php .phtml
PHPIniDir C:/Php

# FIX CURL REQUIRES LIBSSH2
LoadFile "C:/Php/libssh2.dll"
LoadFile "C:/Php/libsqlite3.dll"

关于php - sqlite3 和 pdo_sqlite 未加载到 php apache2 localhost 中,但加载到 php cmd 窗口中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59530576/

相关文章:

PHP Socket 服务器挂起

windows - Windows 批处理参数没有 "short"替换

python - 如何在 Windows 中以编程方式更改 DNS 服务器?

php - Jorani - 无法加载请求的语言文件 : language/fr/global_lang. php

php - 如何在 Linux/Apache 虚拟主机上运行 win32 控制台应用程序?

php - 对脚本 '/path/to/script.php' 的访问已被拒绝(请参阅 security.limit_extensions)

javascript - Ajax提交返回错误但更新数据库正常

javascript - 当按钮具有特定值时,将类添加到按钮

python - 如何创建一个锁定的 python 环境?

html - 如何在 Apache 服务器中将没有 .html 扩展名的页面呈现为 html 页面