PHP扩展将不会在Apache启动时加载

我已经添加了PHP作为Apache 2.2.11模块:

LoadModule php5_module "c:/php/php5apache2_2.dll" 

还补充说

 AddType application/x-httpd-php .php 

在PHP.ini中,我的扩展名dir设置为: extension_dir = "C:\php\ext"

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

但是,当我启动Apache,我得到这些错误:

PHP警告:PHP启动:无法加载dynamic库“C:\ php \ ext \ php_mysql.dll” – 找不到指定的模块。
PHP警告:PHP启动:无法加载dynamic库'C:\ php \ ext \ php_pdo_pgsql.dll' – 找不到指定的模块。
PHP警告:PHP启动:无法加载dynamic库'C:\ php \ ext \ php_pgsql.dll' – 无法find指定的模块。

[Sun 2009年5月17日3时46分01秒] [通知] Apache / 2.2.11(Win32)PHP / 5.2.9-2configuration – 恢复正常操作
[Sun May 17 03:46:01 2009] [notice] Server built:Dec 10 2008 00:10:06
[Sun May 17 03:46:01 2009] [notice]父母:创buildsubprocess4652

PHP警告:PHP启动:无法加载dynamic库“C:\ php \ ext \ php_mysql.dll” – 找不到指定的模块。
PHP警告:PHP启动:无法加载dynamic库'C:\ php \ ext \ php_pdo_pgsql.dll' – 找不到指定的模块。
PHP警告:PHP启动:无法加载dynamic库'C:\ php \ ext \ php_pgsql.dll' – 无法find指定的模块。

[Sun May 17 03:46:01 2009] [notice]子项4652:subprocess正在运行
[Sun 5月17日03:46:01 2009] [通知]孩子4652:获取启动互斥体。
[Sun May 17 03:46:01 2009] [notice]子项4652:启动64个工作线程。
[Sun 2009年5月17日3时46分01秒] [通知]孩子4652:开始线程侦听端口80。

所以我可能在这里忘了一些简单的东西,有人能告诉我我忘了什么吗?

不仅需要PHP扩展的DLL,才能将PHP和PostgreSQL支持添加到PHP中。 您还需要MySQL和PostgreSQL本机库。 PHP扩展的DLL可能不会找到一些他们依赖的DLL,所以他们无法启动。

确保你已经安装了MySQL和PostgreSQL客户端,并把它们的DLL放到了一些可定位的地方。

IE示例:

  • php_mysql.dll依赖于libmysql.dll

所以,确保PHP能够找到libmysql.dll(我相信这个是与Windows PHP的二进制分发,但不知道)。

加上巴勃罗·圣克鲁斯的建议。 在Windows上,您可以在PATH环境中包含所需的库。 (不一定要复制到Windows文件夹)。 加载库widows也会在PATH目录中查找。

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

我在Windows上遇到了特定版本的PHP的问题。 问题是libmysql。 我发现一个有问题的人在php.net网站上发布了一个bug。

我使用了以前的PHP版本和libmysql的工作。 看看你正在使用的PHP发行注记。 我认为,在一个特定的版本之后,他们提到了一个关于libmysql的新策略。

从你提到的PHP是无法找到扩展。 确保在php.ini上设置了指定扩展名所在的位置,扩展名存在以及文件夹可以被访问的路径(读权限)。

如果所有失败尝试将扩展名移动到Windows / system32,努力寻找什么可能是真正的问题。

问候,

这些扩展依赖于由MySQL和PostgreSQL二进制发行版提供的本地库。 安装它们,并把libs放在Apache的bin文件夹中。 那些分别是LIBMYSQL.DLLLIBPQ.DLL

我通常这样做,而不是污染Windows/System32文件夹与他们,因为在我的系统只有Apache / PHP是这些数据库的客户端,也使我的Apache / PHP设置更便携。

根据我的经验,Windows上的PHP是背后的一大痛苦。 我通常最终会把它运行起来,但是总是有很多的Google和试验错误 – 至少对我来说。

所以我终于厌倦了它,只是将Ubuntu服务器安装在虚拟机中,并在几分钟之内启动并运行。 不管这个选择是否适合你,我不能说,但是如果是这样的话,从长远来看这肯定会为你节省很多麻烦。 更不用说,你总是可以移动你的虚拟机,创建快照,并做虚拟机的所有其他花哨的东西。

我有同样的问题。 每当我尝试登录到phpmyadmin,我正在得到那些烦人的窗口弹出错误之一。 我输入用户名和密码,然后会抛出错误。

什么解决了我,也是复制libmysql.dl到Apache的bin目录。 奇怪的是,显然这些扩展包括正确的,但我仍然需要这样做。

我尝试了几个这样的解决方案,其中一个或更多的解决方案…重新启动是这里的关键。 我没有重新启动之间的这些变化,但重新启动后,它工作:

  • 添加postgres DLL到Apache的lib目录
  • 将postgres路径添加到系统PATH
  • 添加postgres DLL到system32

我相信只要PATH能够工作,但没有时间在这里清洁,所以你去。

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

的extension_dir = “C:/ PHP / EXT”

我也有同样的问题,并通过添加“PostgreSQL”bin路径到系统环境变量解决

路径:C:\ Program Files \ PostgreSQL \ 8.4 \ bin您也可以在phpinfo()中检查。

当我安装PostgreSQL时,错过了设置到系统路径。 我手动添加,然后重新启动系统。

我也有这个问题,并将有关(.dlls)复制到系统32,它仍然没有为我工作。 我正在运行Windows 7 64位。 为了得到这个为我工作,我不得不复制libmysql.dll到ext目录。 错误信息留下了Apache日志,页面加载了一个有利的响应(建立了连接)。

我有同样的问题,并试图复制libmySQL.dll到Apache的bin文件夹,它解决了这个问题(我设置PHP 5.2.5 x64)。 非常感谢。