PHP扩展赢得';在Apache启动时不加载

PHP扩展赢得';在Apache启动时不加载,php,windows,apache,Php,Windows,Apache,我添加了php作为Apache 2.2.11的模块: LoadModule php5_module "c:/php/php5apache2_2.dll" 并补充说, AddType application/x-httpd-php .php 在PHP.ini中,我的扩展目录设置为:extension\u dir=“C:\PHP\ext” 是,目录正确,所有文件都存在 但当我启动apache时,会出现以下错误: PHP警告:PHP启动:无法加载动态库“C:\PHP\ext\PHP\u mysql

我添加了php作为Apache 2.2.11的模块:

LoadModule php5_module "c:/php/php5apache2_2.dll"
并补充说,

AddType application/x-httpd-php .php
在PHP.ini中,我的扩展目录设置为:
extension\u dir=“C:\PHP\ext”

是,目录正确,所有文件都存在

但当我启动apache时,会出现以下错误:

PHP警告:PHP启动:无法加载动态库“C:\PHP\ext\PHP\u mysql.dll”-找不到指定的模块。\r\n在第0行的“未知”中
PHP警告:PHP启动:无法加载动态库“C:\PHP\ext\PHP\u pdo\u pgsql.dll”-找不到指定的模块。\r\n在第0行的“未知”中
PHP警告:PHP启动:无法加载动态库“C:\PHP\ext\PHP\u pgsql.dll”-找不到指定的模块。\r\n在第0行的“未知”中

[Sun May 17 03:46:01 2009][注意]已配置Apache/2.2.11(Win32)PHP/5.2.9-2--恢复正常操作
[Sun May 17 03:46:01 2009][通知]服务器构建日期:2008年12月10日00:10:06
[Sun May 17 03:46:01 2009][notice]父进程:已创建子进程4652

PHP警告:PHP启动:无法加载动态库“C:\PHP\ext\PHP\u mysql.dll”-找不到指定的模块。\r\n在第0行的“未知”中
PHP警告:PHP启动:无法加载动态库“C:\PHP\ext\PHP\u pdo\u pgsql.dll”-找不到指定的模块。\r\n在第0行的“未知”中
PHP警告:PHP启动:无法加载动态库“C:\PHP\ext\PHP\u pgsql.dll”-找不到指定的模块。\r\n在第0行的“未知”中

[Sun May 17 03:46:01 2009][注意]子进程4652:子进程正在运行
[Sun May 17 03:46:01 2009][注意]孩子4652:已获得启动互斥锁。
[Sun May 17 03:46:01 2009][注意]子线程4652:启动64个工作线程。
[Sun May 17 03:46:01 2009][注意]子4652:正在启动线程以侦听端口80。


因此,我可能忘记了一些简单的事情,有人能告诉我我忘记了什么吗?

为了向PHP添加MySQL和PostgreSQL支持,不仅需要PHP扩展的DLL。您还需要MySQL和PostgreSQL本机库。PHP扩展的DLL可能找不到依赖的DLL,因此无法启动

确保安装了MySQL和PostgreSQL客户端,并将它们的DLL放在可定位的位置

例如:

  • php_mysql.dll依赖于libmysql.dll

因此,请确保PHP能够找到libmysql.dll(我相信这是Windows PHP的二进制发行版。但不确定)。

这里的问题是apache已经加载了PHP,但PHP无法加载其扩展(mysql、postgresql等)。 我认为您应该以unix格式在php.ini文件中输入路径值(不要使用反斜杠字符作为目录分隔符)。因此,在php.ini文件中更改以下内容:


这些扩展依赖于MySQL和PostgreSQL二进制发行版提供的本机库。例如,安装它们并将libs放入apache的
bin
文件夹中。它们分别是
LIBMYSQL.DLL
LIBPQ.DLL


我通常这样做,而不是用它们污染Windows/System32文件夹,因为在我的系统中,只有apache/php是这些数据库的客户机,而且它使我的apache/php设置更具可移植性。

我在Windows上遇到了一个特定版本的php问题。问题是libmysql。我在php.net网站上发现了一个发布的bug,它来自于有同样问题的人

我使用了以前的php版本,libmysql工作正常。查看您正在使用的php发行版上的注释。我认为在一个特定版本之后,他们提到了一个关于libmysql的新策略

从您提到的内容来看,php无法找到扩展。确保您已在php.ini上设置了路径,该路径指定扩展的位置、存在扩展以及可以访问文件夹(读取权限)

如果全部失败,请尝试将扩展移到windows/system32,以找出真正的问题所在


关于,

根据我的经验,Windows上的PHP是一个巨大的后遗症。我通常最终会让它运行起来,但总有很多谷歌搜索和尝试和错误——至少对我来说是这样


所以我最终厌倦了它,只需在虚拟机上安装Ubuntu服务器,几分钟内就可以运行了。我不能说这是否是你的选择,但如果是的话,从长远来看,这肯定会帮你省去很多麻烦。更不用说,你可以随时移动你的虚拟机,创建快照,做虚拟机所擅长的其他事情。

这是Pablo Santa Cruz的建议。在windows上,您可以在
路径
环境中包含所需的库。(无需复制到Windows文件夹)。加载库时,widows也会查看
PATH
目录


如果在PHP5.2中使用php.net中的标准Win32二进制发行版,那么包的根目录中应该包含所有依赖项。因此,如果您已将PHP5.2安装到
C:\php
,请将此目录添加到
路径
envar。重新启动Apache,我希望扩展能够正确加载。

我遇到了同样的问题,并尝试将libmySQL.dll复制到Apache bin文件夹,解决了问题(我正在设置PHP 5.2.5 x64)。
非常感谢。

我也遇到了同样的问题,通过在系统环境变量中添加“PostgreSQL”bin path解决了这个问题

路径:C:\Program Files\PostgreSQL\8.4\bin 您也可以签入phpinfo()


当我安装PostgreSQL时,系统路径设置丢失。我手动添加,然后重新启动系统。

我也遇到了这个问题,并将相关的(.dll)复制到systen 32,但它仍然不适用于我。我正在运行64位Windows 7。为了让这个工作