题
我已将 php 添加为 Apache 2.2.11 的模块:
LoadModule php5_module "c:/php/php5apache2_2.dll"
并且还添加了
AddType application/x-httpd-php .php
在 PHP.ini 中,我的扩展目录设置为: extension_dir = "C:\php\ext"
和 是的, ,目录正确并且所有文件确实存在。
但是当我启动 apache 时,出现以下错误:
PHP 警告:PHP 启动:无法加载动态库 'C:\php\ext\php_mysql.dll' - 找不到指定的模块。 在第 0 行的未知中
PHP 警告:PHP 启动:无法加载动态库 'C:\php\ext\php_pdo_pgsql.dll' - 找不到指定的模块。 在第 0 行的未知中
PHP 警告:PHP 启动:无法加载动态库 'C:\php\ext\php_pgsql.dll' - 找不到指定的模块。 在第 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] [通知] 家长:创建子进程 4652
PHP 警告:PHP 启动:无法加载动态库 'C:\php\ext\php_mysql.dll' - 找不到指定的模块。 在第 0 行的未知中
PHP 警告:PHP 启动:无法加载动态库 'C:\php\ext\php_pdo_pgsql.dll' - 找不到指定的模块。 在第 0 行的未知中
PHP 警告:PHP 启动:无法加载动态库 'C:\php\ext\php_pgsql.dll' - 找不到指定的模块。 在第 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 放置在某个可定位的位置。
IE。例子:
- php_mysql.dll 依赖于 libmysql.dll
因此,请确保 PHP 能够找到 libmysql.dll(我相信这个是 Windows PHP 的二进制发行版附带的。但不确定)。
其他提示
要添加到巴勃罗圣克鲁斯的建议。在Windows中可以包括在PATH
环境所需的库。 (没有必要复制到Windows文件夹)。当加载库寡妇看起来PATH
目录以及
如果使用标准的Win32二进制分发从php.net为PHP5.2,则包应包含在包的根所有的依赖关系。所以,如果你已经安装了PHP5.2到C:\php
,这个目录添加到PATH
ENVAR。重新启动Apache和我期望扩展到正常加载。
我有一个问题,PHP在Windows的特定版本。问题是的libmysql。我发现从有同样的问题有人在php.net网站发布的错误。
我使用的以前的PHP释放和工作的libmysql。看看你使用PHP发行票据。我认为,一个特定的版本后,他们提到有关的libmysql的新政策。
从你提什么PHP是无法找到的扩展。确保您已设置指定了扩展位于php.ini中的路径,即扩展存在,并且该文件夹可以被访问(读取权限)。
如果所有的失败尝试,努力扩展迁移到Windows / SYSTEM32找到什么可能是真正的问题。
此致
的那些扩展取决于其通过的MySQL和PostgreSQL二进制分发提供的本地库。安装它们,把库中的apache的bin
文件夹的例子。这些分别是LIBMYSQL.DLL
和LIBPQ.DLL
。
我通常做的,而不是污染Windows/System32
文件夹和他们在一起,因为我的系统只在Apache / PHP是这些数据库的客户端,也这让我的Apache / PHP的设置更加便于携带。
在我的经验,PHP在Windows上是在后面的一个重大的痛苦。我通常会得到它最终会工作,但总有涉及很多谷歌上搜索和试错的 - 至少对我来说
于是,我终于厌倦了它,只是安装Ubuntu服务器在虚拟机上,把它并在几分钟内运行。这是否是一个选择或不,我不能说,但如果是它肯定会为你节省很多头痛的,从长远来看。更何况,你可以随时移动你的虚拟机,创建快照和做所有其他花哨的东西,虚拟机是良好的。
我有同样的问题。我得到那些烦人的弹出窗口的错误之一,每次我尝试登录到phpMyAdmin。我在用户名和密码输入,然后将引发的误差。
什么解决了这个问题对我来说,也被复制libmysql.dl到apache的bin目录。奇怪的是apparantly其中包括正确的,但仍然需要我这样做的扩展。
我尝试了其中的几种解决方案,其中一个或多个有效......重新启动是这里的关键。在这些更改之间我没有重新启动,但重新启动后它可以工作:
- 将 postgres DLL 添加到 apache lib 目录
- 将 postgres 路径添加到系统 PATH
- 将 postgres DLL 添加到 system32
我相信仅路径就可以工作,但这里没有时间清洁,所以就这样吧。
这里的问题是,阿帕奇加载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,设定成系统路径错过。我手动添加然后重新启动系统。
我有这个问题太,并抄送相关(.DLL文件),以SYSTEN 32和它仍然没有为我工作。我运行Windows 7 64位。为了得到这个工作对我来说,我不得不在同样的libmysql.dll复制到ext目录。该错误消息离开Apache日志并装载有具有良好的反应(连接如建立)。
的页面我有同样的问题,并试图将libmysql.dll拷贝到apache的bin文件夹,它解决了这个问题(我设置PHP 5.2.5 64位)。 非常感谢。