无法让PHP在Vista 64上使用mySQL

时间:2009-02-20 14:30:36

标签: php mysql windows-vista 64-bit

我正在运行Vista 64框,并尝试使用IIS7设置Joomla(我喜欢Joomla,我想在我的网站上有一些asp.net组件,所以这就是我想使用IIS7而不是Apache的原因)。这是我第一次安装php和mysql,所以很有可能我做了一些明显错误的事情......虽然我认为我已经尝试了足够的诊断步骤(如下所述),但对我来说没有什么明显的错误 > ...

我安装了PHP(32位,5.2.8),这似乎工作正常:我有一个test.php,它在IIS7提供的网页中显示phpinfo。

我还安装了mySQL(32位,5.1.31,从http://dev.mysql.com/downloads/mysql/5.1.html#win32下载)。这看起来也很好(我可以使用MySQL Administrator连接到它)。

我已经设置了php.ini以及什么不打开mySQL扩展。如果我从命令行执行php -m,我会在列表中看到mysql。但是,使用phpinfo(从命令行(php -info)或通过IIS(在test.php文件中)提供),没有mysql部分。因为mysql甚至没有出现在php的命令行调用中,所以我认为这与IIS无关 - 只需安装mysql& php on vista。

我没有安装mysql 64bit,因为我有一个32位的php安装,并且由于mysql 32位似乎工作正常,我认为这不是问题。似乎没有正式的64位版本的php,所以这就是为什么我安装它(再次,这似乎工作正常)。

我目前已禁用UAC,因此不是问题。

如果我在我的php.ini中将分号放回extension = php_mysql.dll前面,那么当运行php -m时,mysql模块就不显示了。如果我再拿出来然后就会出现。所以我至少可以肯定我正在修改正确的php.ini。

我已将libeay32.dll,libmysql.dll和php_mysql.dll复制到c:\ windows \ system32。我把它们拿出来了,这似乎没有对php -m的输出产生影响(例如,如果模块从php.ini中取消注释,mysql仍会显示在那里)。

我还尝试将dll ibeay32.dll,libmysql.dll和php_mysql.dll复制到c:\ windows \ sysWOW64;没有任何区别。

从命令行运行php -info时,似乎最小的积极步骤是mysql出现。还有什么我应该试图弄清楚为什么mysql出现在php -m而不是php -info?或者我是否偏离使用它来判断php是否可以与mysql通信?

谢谢!

6 个答案:

答案 0 :(得分:2)

我已经解决了大部分问题。

答案是将libmysql.dll复制到sysWOW64。其他dll不是必需的,不需要复制到system32。我想这是在64位系统上使用php32的结果。

我认为最初没有用,因为从命令行运行php -info仍然没有显示mysql。但是,从IIS提供的php文件运行phpinfo确实显示了mysql。

我仍然不知道为什么从命令行运行php -info时mysql没有出现,但我想我现在可以忍受这个。

答案 1 :(得分:1)

如果你想专注于php开发,我强烈建议你不要手动安装这些东西,然后从http://www.apachefriends.org/en/xampp.html下载xampp

基本上这是一个经过全面测试和构建的软件包,它将链接软件并为您提供完整的开发环境。

还有其他apache / php / mysql捆绑包。

这里的问题是,只要你有apache php使用mysql,你就可以轻松配置IIS连接器而且你不会破坏mysql连接

还要记得检查一切     

答案 2 :(得分:0)

您确定CLI和IIS使用相同的php.ini吗?在POSIX兼容系统上,php通常使用两个不同的系统。根据我的经验,无意中使用错误的php.ini是 在Windows上运行php的主要障碍。

尝试稍微更改php.ini中的选项(如memory_limit129M而不是128M左右)并使用ini_get查看更改是否会影响php @ IIS / @ CLI。如果这确实只影响php @ IIS,请在php.ini上搜索C: - 可能还有第二个(通常在PATH,如C:\Windows\php.ini)。

答案 3 :(得分:0)

以下是我成功遵循的一篇很好的分步文章的链接。它没有特别针对x64,但老实说,我不认为这是你的配置问题。 Link

答案 4 :(得分:0)

我在vista 64上遇到了几乎相同的问题 问题是来自php安装的libmysql.dll 在system32中被mysql安装覆盖 我替换了它,mysqladmin和joomla工作得很好。

答案 5 :(得分:0)

您还可以尝试在IIS7中为32位应用程序设置单独的应用程序池,然后在池的高级设置中,将“启用32应用程序”设置为true(默认值为false)。然后设置php站点以使用该应用程序池。