我在 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 文件的路径;加上它显示了它的C:\WINDOWS
在“配置文件(php.ini)路径”中复制)。
该配置必须被 ApachePHP 中的某些内容覆盖 - pgsql 和 pdo_pgsql 都在注释但显示的库中,而我所有其他 php.ini 实例仅启用了 MySQL 和 SQLite。另一方面,即使D:\Programy\EDB_Apache\php\Sdk\include\ext
( D:\Programy\EDB_Apache
is 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-includes=C:\pgBuild32\include; D:\pginstaller_2.auto-repo\output\include;D:\pginstaller_2.auto-repo\apache.staging\include" "--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-prefix=D:\pginstaller_2.auto-repo\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-sockets” “--with-gd=SHARED” “--without-mysql” “--without-mysqli” “--without-sqlite3” “--without-pdo -mysql" "--没有-pdo-sqlite"
那里列出的路径(C:\\pgBuild32\include
等D:\\pginstaller_2.auto-repo\output\lib
)在我的计算机上不存在。它们的存在似乎证实了我的假设,即部分设置被某些 EnterpriseDB 默认值覆盖(或者 php.ini 中的配置不知何故不起作用,因此应用了默认值)。我不知道这些设置保存在哪里 - 这就是这个问题的重点,如果我知道,我会改变它们并庆祝。
问题的另一个可能原因是:缺少 dll。大多数 php 发行版都在./ext
. EnterpriseDB中的“php”目录只有一个子目录,命名为“Sdk”;扩展名是(或应该是;该目录中没有 dll 文件)在D:\Programy\EDB_Apache\php\Sdk\include\ext
目录中。该目录仅包含 .h 文件(在以扩展名命名的目录中),没有 dll。如果这不是 EnterpriseDB 包的普通架构,请告诉我;我可能有一个错误的安装程序文件。
所以我首先将另一个 php 安装中的 dll 复制到扩展文件夹中(我没有设法得到 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 版本选择。
现在有什么建议吗?