PHP - SQL Server 2005 Express 升级到 2008 Standard 出现问题

3
我有一个PHP应用程序在以下系统上运行良好:
  • Web应用程序:PHP版本5.2.3
  • 操作系统:Windows Server 2003标准版32位
  • 数据库:SQL Server 2005(express)
  • Web服务器:IIS 6
我正在尝试在以下系统上运行相同的应用程序:
  • Web应用程序:PHP版本5.2.11
  • 操作系统:Windows Server 2008标准版64位
  • 数据库:SQL Server 2008标准版64位
  • Web服务器:IIS 7
安装和设置后,phpinfo()正在运行,但没有MSSQL部分。我查找了一些微软文档来使用php_sqlsrv.dll设置系统,但它似乎使用不同的接口连接到数据库(不再是mssql_connect(),现在是sqlsrv_connect())。这是将PHP连接到SQL Server 2008的唯一方法,还是我的设置有误?如果我可以返回到PHP 5.2.3并使其正常工作,那就没问题了,但如果这样做没有帮助,我不想撤销已经完成的工作。
谢谢!
4个回答

3

1

名为php_mssql.dll的扩展程序与旧版Microsoft库(ntwdblib.dll)相关联。该库最后一次更新是在MS SQL Server 6.5中。它是一个32位库,不支持许多新版本数据库引入的新功能。可以使用FreeTDS编译扩展程序的版本。这将提供对最新版本的TDS协议的访问权限。这也允许您从Linux/Unix系统访问SQL Server。

名为php_sqlsrv.dll的扩展程序是由Microsoft开发和维护的,支持较新版本的SQL Server,并且应该在您描述的两种环境中都能正常工作。


0
在您的php安装的ext文件夹中应该有一个名为php_mssql.dll的dll。您需要确保在php.ini文件中使用extension = php_mssql.dll加载它。如果在重新启动Web服务器后在phpinfo()中没有显示它,那么可能是您安装了错误的线程安全版本的PHP,这取决于您如何使用Fast CGI设置事情。您不应该在使用sqlsrv(PHP的SQL Server驱动程序)时遇到问题。然而,我建议使用1.1版本的驱动程序,因为它具有一些改进并支持SQL Azure。您会注意到datetime列返回为PHP DateTime对象而不是字符串。我还注意到,如果您只使用Microsoft Web Platform Installer安装堆栈,则会遇到更少的问题。

0

在遇到这个问题后,我几乎把头发都拔光了,找了好几个小时也放弃了,最终我找到了答案:

http://docs.moodle.org/22/en/Installing_MSSQL_for_PHP#Using_FreeTDS_on_Windows

php_dblib.dll 是支持旧的 mssql php 函数(mssql_connect() 等)的“新” dll。因此,这个新的 dll 取代了 php_mssql.dll,一切都像以前一样工作。(至少现在对我来说是这样的)

我的服务器设置为:

操作系统: Windows Server 2008,
数据库: MSSQL Server 2008 R2,
PHP: 5.3.13

phpinfo() 中的摘录:

System  Windows NT XXXXXXXXXXXXX 6.1 build 7601 (Windows Server 2008 R2
Enterprise Edition Service Pack 1) i586 Build Date  May 8 2012 18:41:52
Compiler    MSVC9 (Visual C++ 2008) Architecture    x86

Configure Command   cscript /nologo configure.js
"--enable-snapshot-build" "--enable-debug-pack" "--disable-zts"
"--disable-isapi" "--disable-nsapi" "--without-mssql"
"--without-pdo-mssql" "--without-pi3web"
"--with-pdo-oci=C:\php-sdk\oracle\instantclient10\sdk,shared"
"--with-oci8=C:\php-sdk\oracle\instantclient10\sdk,shared"
"--with-oci8-11g=C:\php-sdk\oracle\instantclient11\sdk,shared"
"--with-enchant=shared" "--enable-object-out-dir=../obj/"
"--enable-com-dotnet" "--with-mcrypt=static"
"--disable-static-analyze"

Server API  CGI/FastCGI
Virtual Directory Support   disabled
Configuration File (php.ini) Path   C:\Windows
Loaded Configuration File   C:\Program Files (x86)\PHP\v5.3\php.ini

希望这能为某人节省时间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接