【问题标题】:SQLSRV PHP for SQL Server for is not a valid Win32 applicationSQLSRV PHP for SQL Server 不是有效的 Win32 应用程序
【发布时间】:2014-03-20 10:35:24
【问题描述】:

这是我的设置

  • Windows Server 2008 R2 64 位
  • Apache 2.4.4 64 位
  • PHP 5.4.15 32 位(64 位仍处于试验阶段),线程安全,VC9 编译器
  • Microsoft SQL Server 2012 Native Client 64 位
  • Microsoft Visual C++ 2010 x86 和 x64

我需要加载 Microsoft 的 SQLSRV 库。

我已将“extension=php_sqlsrv_54_ts.dll”添加到 php.ini 并将“php_sqlsrv_54_ts.dll”复制到安装 PHP 的 ext 文件夹中。

当我重新启动 apache 时,我的 php 错误日志中出现以下错误,并且 SQLSRV 未在 phpinfo 中列出。

PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\php5\ext\php_sqlsrv_54_ts.dll' - %1 is not a valid Win32 application.

我哪里错了?

编辑 出于测试目的,我刚刚安装了 PHP 5.5.10 64 位和 VC 2012,但错误仍然相同:(

【问题讨论】:

  • 这里只是猜测,但我不确定 32 位应用程序 (PHP) 是否可以加载 x64 dll (SQL server)。
  • 感谢您的评论。 php_sqlsrv_54_ts.dll 不是 32 位的吗?我从microsoft.com/en-gb/download/details.aspx?id=20098 下载的,看不到任何关于它是 32 位还是 64 位的参考。
  • 不知道为什么投反对票。知道为什么会很有用,然后我可以提供您需要的信息。
  • 对一个问题投反对票是很苛刻的,如果没有这些问题,这个网站将毫无用处。但是,这可能是因为使用 Apache 模块的 32 位 TS PHP 根本不适用于 64 位 Apache。您必须将 mod_fcgid 与 32 位 PHP NTS 或 32 位 Apache 一起使用,而不是 64 位。 (我刚刚将您的问题重新投票为 0!)
  • 谢谢罗伯。真正有用的评论,当然听起来很合乎逻辑。我希望试一试,尽管我对 UniServer Zero 印象深刻。它让我快速启动并运行:)

标签: php sql-server apache sqlsrv


【解决方案1】:

我不知道它是否有帮助,但我在我的 Windows 7 64 位系统上使用了所有 32 位

这是我使用的,我可以使用 SQL Server

httpd-2.4.6-win32-VC9 //apache 2.4
php-5.4.9-Win32-VC9-x86 //php5

如果我有 \php\ 文件夹,则在里面

  • php5apache2_4.dll

\php\ext\我有

  • php_pdo_sqlsrv_54_nts.dll
  • php_pdo_sqlsrv_54_ts.dll

我在 php.ini 的末尾添加了这个

[PHP_SQLSRV]
extension=php_sqlsrv_54_ts.dll
[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_54_ts.dll

我记得让它工作起来很痛苦,但现在可以了。如果我还记得,我会编辑我的答案

更新:

我认为这篇博文看起来很熟悉我是如何工作的

http://robsphp.blogspot.co.uk/2012/09/how-to-install-microsofts-sql-server.html

【讨论】:

  • 感谢 AdRock。我会试试你的设置并尽快报告。也许 64 位 Apache 对我来说是失败的地方。
  • 我从来没有设法让它工作。我尝试了许多教程和论坛,所以我确信这个答案是正确的。我的设置中一定有一个设置会导致问题。也许它的 Apache 2.4 64 位?我决定改用 The Uniform Server uniformserver.com。按照上述步骤操作完美。
  • 如果您使用 Apache 64 位,您目前有 2 种使用 SQLSRV 加载 PHP 的方法: 1. 使用 PHP 5.5 64 位构建和自定义 php_sqlsrv 驱动程序构建从 robsphp 博客页面link 2. 获取32 位 PHP 并使用 Apache 的 mod_fcgid 模块。它允许在 64 位 Apache 中加载 32 位 cgi 模块:link
【解决方案2】:

目前微软 sqldriver 仅适用于 32 位 php 版本。 这是我安装sql驱动程序的步骤。

【讨论】:

    【解决方案3】:

    我遇到了同样的问题。由于 32 位提供的硬 RAM 限制,运行需要接口的旧版 5.6 php x64。

    解决方案是在 Rob 提供的非官方驱动程序中。

    https://robsphp.blogspot.nl/2012/06/unofficial-microsoft-sql-server-driver.html

    我对其进行了测试,它在 5.6.33 x64 上正常工作

    【讨论】:

      【解决方案4】:

      Sqlsrv 需要 php x86。当 php 是 64 位架构时会出现此消息。

      【讨论】:

        猜你喜欢
        • 2013-12-07
        • 1970-01-01
        • 2013-07-15
        • 2013-11-03
        • 2017-04-16
        • 2012-07-03
        • 2019-03-02
        • 2016-12-07
        相关资源
        最近更新 更多