连接到MS SQL 2000/2005的正确PHP配置是什么?

时间:2009-04-14 13:12:57

标签: php sql-server windows iis-6

我在Windows 2003 / IIS6上使用FastCGI运行PHP 5.2.6 (non-thread-safe build)许多服务器。

我遇到了一些连接到MS SQL 2000/2005的问题(MySQL连接工作正常,ASP / ASP.NET脚本也可以成功连接到MS SQL)。 One solution建议将SQL客户端工具ntwdblib.dll文件复制到PHP扩展文件夹,或者在Web服务器上安装所有SQL客户端工具(我不愿意这样做)。

建议的另一个解决方案是使用Microsoft SQL Server 2005 Driver for PHP。这对于编写绿地应用程序看起来很好,但是对于像phpBBS或WordPress这样的应用程序,这似乎不起作用。

例如,以下脚本:

<?php 
$host = "mssqlhost"; 
$user = "phpbb2"; 
$password = "phpbb2"; 

$connect_sql_server = mssql_connect($host, $user, $password); 
?>

失败:

  

PHP警告:mssql_connect()   [function.mssql-connect]:无法   连接到服务器:mssqlhost in   E:\ AppsDev.NET_UK_Minds \ phpSqlNC \ WWW \ test.php的   在第6行

目标是允许PHP脚本连接到在不同服务器上运行的SQL 2000和SQL 2005。我还要补充说,目前升级到更高版本的PHP不是一种选择。

在Windows 2003 / IIS6上配置PHP以连接到SQL 2000/2005的正确方法是什么?

3 个答案:

答案 0 :(得分:5)

在尝试了各种“解决方案”后,事实证明只需更换PHP可执行文件夹中的ntwdblib.dll文件即可解决问题。

无需安装任何: SQL Native Client SQL客户端工具用于PHP的Microsoft SQL Server 2005驱动程序,许多死路一条的建议。

所有需要做的就是确保将ntwdblib.dll版本2000.80.2039.0放入c:\php文件夹(或者您安装/未压缩的PHP的任何位置),然后重置IIS。 PHP文档suggestntwdblib.dll复制到%SYSTEMROOT%\ System32这不起作用,他们还建议这只支持命名管道,这也是错误的。

我没有试过查看ntwdblib.dll的更高版本是否有效,但2000.80.2039.0适用于我。

答案 1 :(得分:1)

不是真的答案,而是更有用的信息......

最新的php 5.2.X附带的ntwdblib.dll(2000.2.8.0)版本适用于Apache和MSSQL(2008)。我有2000.80.X.X版本的DLL副本,它比PHP更新。我不知道这是否会让它变得更好。

official msft php mssql驱动程序中不包含“mssql_”函数。他们已将它们更改为不同的命名约定。 (“sqlsrv_”)您发布的链接版本为1.0,但它们已经在1.1版本上。 “mssql_”函数要求存在ntwdblib.dll。

答案 2 :(得分:-1)

Apache 2.2.14 / PHP 5.2.12 / MS-SQL 2008集成

  • 下载适用于Windows Installer程序包2008的Apache 2.2.14 32位 httpd DOT apache DOT org / download.cgi - &gt; apache_2.2.14-win32-x86-no_ssl
  • 在安装Apache
  • 时遵循默认值
  • 停止Apache 2.2服务

  • 下载适用于Windows 2008 32位的PHP 5.2.12 Windows Zip软件包; (用作Apache模块的PHP需要VC6线程安全版本。)

windows DOT php DOT net / download / - &gt; php-5.2.12-Win32-VC6-x86.zip - 将存档解压缩到C:\ PHP - 验证安装:C:\ PHP&gt; php -v
- 设置环境变量PHPRC = C:\ PHP - 将'C:\ PHP \ php.ini-recommended'重命名为'C:\ PHP \ php.ini' - 编辑C:\ PHP \ php,ini文件:

modify:     extension_dir = "C:\PHP\ext"
uncomment:  extension=php_mssql.dll
  • 将以下行添加到“C:\ Program Files \ Apache Software Foundation \ Apache2.2 \ conf \ httpd.conf”

    PHPIniDir "C:/PHP/"
    LoadModule php5_module "C:/PHP/php5apache2_2.dll"
    AddHandler application/x-httpd-php .php
    
  • 将以下行添加到“C:\ Program Files \ Apache Software Foundation \ Apache2.2 \ conf \ mime.types”

    application/x-httpd-php php
    application/x-httpd-php-source  phps
    
  • 确保包含内容的phpinfo.php文件位于该文件夹中 C:\ Program Files \ Apache Software Foundation \ Apache2.2 \ htdocs

  • 启动Apache 2.2服务

  • 验证Apache / PHP集成:http://localhost/phpinfo.php - &gt; 'PHP Version 5.2.12'信息显示
  • 验证是否加载了mssql'模块:c:\ php \ php -m

所有的作品都像魅力......不需要额外的步骤。