我在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的正确方法是什么?
答案 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文档suggest将ntwdblib.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服务
下载适用于Windows 2008 32位的PHP 5.2.12 Windows Zip软件包; (用作Apache模块的PHP需要VC6线程安全版本。)
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服务
所有的作品都像魅力......不需要额外的步骤。