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

问题描述 投票:1回答:1

问题描述

我使用Windows 10操作系统。我已经在C:/Apache24PHP7.4.1 in C:/php7中安装了Apache 2.4。在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浏览器中进入“本地主机”,我看到了PHP信息文件。但是,--->它没有启用sqlite3或pdo_sqlite

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

更新

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

PHP Warning: PHP Startup: Unable to load dynamic library 'pdo_sqlite' (tried: C:\\php7\\ext\\pdo_sqlite (The specified module could not be found.), C:\\php7\\ext\\php_pdo_sqlite.dll (The specified module could not be found.)) in Unknown on line 0 但是,可以使用Windows 10资源管理器在php_pdo_sqlite.dll中看到c:\php7\ext,但另一方面,C:\\php7\\ext不是Windows资源管理器的有效路径。我不知道是否仅将双反斜杠用于打印,或者实际上是否在该路径中进行搜索。但是,cmd不会被双反斜杠打扰。我真的不知道该怎么想!

php windows apache sqlite
1个回答
0
投票

[当apache运行php(因为您获取由Web服务器提供的URL,并将* .php URL重定向到php),然后php从一个特定目录加载php.ini文件。您可以在Web浏览器的php.ini输出中看到已加载的phpinfo()(以及可能的其他配置文件)的路径。

相反,如果从命令行运行php,则php使用不同的php.ini,更确切地说,使用不同目录中的php.ini。您也可以在phpinfo()的输出中看到此php.ini的路径,但它将显示在终端中,而不是在浏览器中。您可以通过类似于以下命令的命令获得此输出:

php c:\Apache24\htdocs\index.php

关键是,如果要同时从命令行和Web服务器使用sqlite或其他扩展名,则需要调整两个php.ini文件。

而不是双反斜杠,也许应该使用单斜杠斜杠,例如extension_dir = "C:/php7/ext",但是免责声明,我在Windows计算机上没有安装apache和php,因此我无法确认我是否正确说了这句话。

我仍然希望我能提供帮助。 :)

祝您新年快乐。 :)

© www.soinside.com 2019 - 2024. All rights reserved.