phpinfo()中显示的扩展名与加载的php.ini中启用的扩展名不匹配

时间:2014-03-10 09:08:20

标签: php apache php-ini enterprisedb

我在Windows XP(32位)上使用EnterpriseDB ApachePHP。我尝试在ApachePHP的目录中启用php.ini中的一些扩展,但没有任何改变。然后我发现phpinfo()不仅没有显示我在php.ini中取消注释的扩展,而且还向其他人显示我没有取消注释。我的计算机上有其他几个php.ini文件,但phpinfo()显示php.ini文件的正确路径为“已加载的配置文件”(D:\Programy\EDB_Apache\php\php.ini - 我使用的php.ini文件的路径;以及它在“配置文件(php.ini)路径”中的C:\WINDOWS中显示其副本。

配置必须被ApachePHP中的某些东西覆盖 - pgsql和pdo_pgsql是注释但显示的库之一,而我所有其他php.ini实例都只启用了MySQL和SQLite。另一方面,即使D:\Programy\EDB_Apache\php\Sdk\include\extD:\Programy\EDB_Apache中包含的扩展名为ApachePHP root)中的扩展名也与phpinfo()中显示的扩展名不匹配,因此可能更加困难。

那么如何查找和编辑我的phpinfo()中显示的配置,或者如何解决导致它不对应加载的php.ini文件的错误?请不要告诉我重新启动Apache或我的计算机(我配置localhost),我做了很多次,甚至在提出这个问题之前。

编辑:再一次,我绝对确定phpinfo()中显示的“加载配置文件”路径与我使用的php.ini文件的路径匹配。即使那里显示的路径不正确(这将是一个问题 - 如何可能,以及如何纠正它?),我的计算机上的任何一个php.ini文件都不匹配phpinfo显示的配置。我搜索了php.ini的任何实例,所以我确信我没有错过任何一个,即使它是一个隐藏/系统文件。

EDIT2:重新安装EDB ApachePHP没有帮助。我在重新安装过程中略微改变了路径,所以我在这里更新了路径。 “加载的配置文件”路径仍然匹配正确的配置文件,并且每次更改后我都会继续重新启动Apache。

我更接近phpinfo(),特别是“配置命令”:

  

cscript / nologo configure.js“--​​enable-cli”“ - enable-cgi”   “--with-openssl”“ - enable-pdo”   “--with-EXTRA-包括= C:\ pgBuild32 \包括; d:\ pginstaller_2.auto回购\输出\包括; d:\ pginstaller_2.auto回购\ apache.staging \包括”   “--with-extra-libs = C:\ pgBuild32 \ lib; D:\ pginstaller_2.auto-repo \ output \ lib; D:\ pginstaller_2.auto-repo \ apache.staging \ lib”“ - enable-apache2filter “” - enable-apache2-2filter“   “--enable-apache2handler”“ - enable-apache2-4handler”   “--with-apache-hooks”“ - with-pgsql”“ - with-pdo-pgsql”   “--with前缀= d:\ pginstaller_2.auto回购\ php.staging”   “--enable-one-shot”“ - enable-cli-win32”“ - enable-embed”   “--enable-isapi”“ - enable-ftp”“ - without-mysqlnd”   “--with-xsl = SHARED”“ - enable-mbstring”“ - enable-mbregex”   “--enable-shmop”“ - enable-exif”“ - enable-soap”“ - enable-socket”   “--with-gd = SHARED”“ - without-mysql”“ - without-mysqli”   “--without-sqlite3”“ - without-pdo-mysql”“ - without-pdo-sqlite”

我的计算机上不存在那里列出的路径(C:\\pgBuild32\includeD:\\pginstaller_2.auto-repo\output\lib等)。它们的存在似乎证实了我的假设,即部分设置被某些EnterpriseDB默认值覆盖(或者php.ini中的配置以某种方式不起作用,因此应用了默认值)。我不知道这些设置保存在哪里 - 这就是这个问题的重点,如果我知道的话,我会改变它们并庆祝。

还有另一个可能的原因:缺乏dll。大多数php发行版都在./ext中有它们。在EnterpriseDB中,“php”目录只有一个子目录,名为“Sdk”; D:\Programy\EDB_Apache\php\Sdk\include\ext目录中的扩展名(或应该是;该目录中没有dll文件)。此目录仅包含.h文件(在扩展名后面的目录中),没有dll。如果这不是EnterpriseDB捆绑包的普通架构,请告诉我;我的安装程序文件可能不正确。

所以我首先将dll从另一个php安装(我无法完全获得PHP 5.4.23的那些,但它们也是5.4)复制到扩展文件夹中,但没有任何改变。然后我甚至将整个ext文件夹复制到ApachePHP包位置的php目录,并将扩展路径更改为它 - 再次,没有变化。

出于测试原因,我尝试运行php.exe。它发出警告:

PHP Warning:  PHP Startup: gd: Unable to initialize module
Module compiled with build ID=API2010025,TS,VC9
PHP    compiled with build ID=API2010025,TS,VC10
These options need to match
in Unknown on line 0

因此,如果我想替换dll,我需要找到VC9 ApachePHP(它是否仍然支持PostgreSQL 9.3?我的主要原因是能够为我的数据库创建表单)或VC10 PHP 5.4。我没有找到PHP 5.4的任何.msi安装程序(甚至更少的VC10)和在Windows上通过命令行安装软件的一些不好的经验后我不想尝试非msi版本而不确定这是唯一的选择。

现在有什么建议吗?

0 个答案:

没有答案