我已经添加了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]父母:创buildsubprocess4652PHP警告: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能够找到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.DLL
和LIBPQ.DLL
。
我通常这样做,而不是污染Windows/System32
文件夹与他们,因为在我的系统只有Apache / PHP是这些数据库的客户端,也使我的Apache / PHP设置更便携。
根据我的经验,Windows上的PHP是背后的一大痛苦。 我通常最终会把它运行起来,但是总是有很多的Google和试验错误 – 至少对我来说。
所以我终于厌倦了它,只是将Ubuntu服务器安装在虚拟机中,并在几分钟之内启动并运行。 不管这个选择是否适合你,我不能说,但是如果是这样的话,从长远来看这肯定会为你节省很多麻烦。 更不用说,你总是可以移动你的虚拟机,创建快照,并做虚拟机的所有其他花哨的东西。
我有同样的问题。 每当我尝试登录到phpmyadmin,我正在得到那些烦人的窗口弹出错误之一。 我输入用户名和密码,然后会抛出错误。
什么解决了我,也是复制libmysql.dl到Apache的bin目录。 奇怪的是,显然这些扩展包括正确的,但我仍然需要这样做。
我尝试了几个这样的解决方案,其中一个或更多的解决方案…重新启动是这里的关键。 我没有重新启动之间的这些变化,但重新启动后,它工作:
我相信只要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)。 非常感谢。