【问题标题】:PHP - SQL Server 2005 express to 2008 standard problemPHP - SQL Server 2005 express to 2008 标准问题
【发布时间】:2009-09-24 13:35:41
【问题描述】:
我有一个 PHP 应用程序在以下系统上运行良好:
- 网络应用:PHP 5.2.3 版
- 操作系统:Windows Server 2003 Standard 32 位
- 数据库:SQL Server 2005 (express)
- 网络服务器:IIS 6
我正在尝试在以下设备上运行相同的东西:
- 网络应用:PHP 版本 5.2.11
- 操作系统:Windows Server 2008 Standard 64 位
- 数据库:SQL Server 2008 Standard 64 位
- 网络服务器:IIS 7
在完成我通常做的安装和设置之后,phpinfo() 正在运行,但没有 MSSQL 部分。我环顾四周,发现一些 MS 文档使用php_sqlsrv.dll 设置系统并尝试了,但它似乎使用不同的接口连接到数据库(不再是mssql_connect(),现在是sqlsrv_connect())。这是将 php 连接到 SQL Server 2008 的唯一方法还是我只是设置错误?如果我可以回到 PHP 5.2.3 并让它工作,那很好,但如果它没有帮助,我不想撤销我所拥有的。
谢谢,
【问题讨论】:
标签:
php
sql-server-2005
sql-server-2008
【解决方案2】:
名为 php_mssql.dll 的扩展名与旧的 Microsoft 库 (ntwdblib.dll) 链接。该库最后一次更新为 MS SQL Server 6.5。它是一个 32 位库,不支持新版本数据库中引入的许多新功能。可以使用 FreeTDS 编译扩展版本。这将允许访问最新版本的 TDS 协议。这还允许您从基于 Linux/Unix 的系统访问 SQL Server。
名为 php_sqlsrv.dll 的扩展是由 Microsoft 开发和维护的,它为 SQL Server 的较新版本提供了更好的支持,并且它应该在您描述的两种环境中都可以工作。
【解决方案3】:
您的 php 安装文件的 ext 文件夹中应该有一个名为 php_mssql.dll 的 dll。您需要确保将其加载到扩展名为 php_mssql.dll 的 php.ini 文件中。如果重新启动网络服务器后 phpinfo() 中没有显示,则可能是您安装了错误的 PHP 线程安全版本,具体取决于您如何使用 Fast CGI 进行设置。使用 sqlsrv(PHP 的 SQL Server 驱动程序)应该没有问题。不过,我建议使用 1.1 版驱动程序,因为它有一些改进并支持 SQL Azure。您会注意到的一件事是日期时间列作为 PHP DateTime 对象而不是字符串返回。我还注意到,如果您只使用 Microsoft Web 平台安装程序安装堆栈,您遇到的问题会少很多。
【解决方案4】:
在遇到这个问题并且几乎把头发扯掉几个小时并放弃之后,我找到了答案:
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
希望这可以节省一些时间。