问题解决了!
经过几天的解决并重新安装了几乎所有东西,包括 Apache、不同的 PHP 和 MSSQL 版本,我想出了以下内容。我并不是说这是最好的解决方案,但它确实有效:
功能环境:
1) 带有 MSSQL 2012 的 Windows Azure 服务器
2) Apache 2.2 PHP 5.3.28 - 安装程序:php-5.3.28-Win32-VC9-x86.msi 下载自:
http://windows.php.net/download/
PHP 扩展(我列出了所有但你只需要最后几个):
[PHP_BZ2]
extension=php_bz2.dll
[PHP_CURL]
extension=php_curl.dll
[PHP_ENCHANT]
extension=php_enchant.dll
[PHP_FILEINFO]
extension=php_fileinfo.dll
[PHP_GD2]
extension=php_gd2.dll
[PHP_GETTEXT]
extension=php_gettext.dll
[PHP_GMP]
extension=php_gmp.dll
[PHP_IMAP]
extension=php_imap.dll
[PHP_INTL]
extension=php_intl.dll
[PHP_LDAP]
extension=php_ldap.dll
[PHP_MBSTRING]
extension=php_mbstring.dll
[PHP_MYSQL]
extension=php_mysql.dll
[PHP_MYSQLI]
extension=php_mysqli.dll
[PHP_OCI8]
extension=php_oci8.dll
[PHP_OCI8_11G]
extension=php_oci8_11g.dll
[PHP_OPENSSL]
extension=php_openssl.dll
[PHP_PDO_MYSQL]
extension=php_pdo_mysql.dll
[PHP_PDO_OCI]
extension=php_pdo_oci.dll
[PHP_PDO_ODBC]
extension=php_pdo_odbc.dll
[PHP_PDO_PGSQL]
extension=php_pdo_pgsql.dll
[PHP_PDO_SQLITE]
extension=php_pdo_sqlite.dll
[PHP_PGSQL]
extension=php_pgsql.dll
[PHP_SHMOP]
extension=php_shmop.dll
[PHP_SNMP]
extension=php_snmp.dll
[PHP_SOAP]
extension=php_soap.dll
[PHP_SOCKETS]
extension=php_sockets.dll
[PHP_SQLITE]
extension=php_sqlite.dll
[PHP_SQLITE3]
extension=php_sqlite3.dll
[PHP_SYBASE_CT]
extension=php_sybase_ct.dll
[PHP_TIDY]
extension=php_tidy.dll
[PHP_XMLRPC]
extension=php_xmlrpc.dll
[PHP_XSL]
extension=php_xsl.dll
[PHP_EXIF]
extension=php_exif.dll
php_sqlsrv_53_ts_vc9.dll
php_pdo_sqlsrv_53_ts_vc9.dll
extension=php_com_dotnet.dll
php_pdo_sqlsrv_53_ts_vc9.dll 扩展包下载自:http://www.microsoft.com/en-us/download/details.aspx?id=20098
extension=php_com_dotnet.dll 下载自: http://originaldll.com/file/php_com_dotnet.dll/29343.html(无法验证此文件的安全性,但它可以工作)
MSSQL 2012需要设置如下:
创建数据库时,打开管理工作室并右键单击左侧树中的数据库实例。确保在 properties->security 选项卡下选择:“SQL Server 和 Windows 身份验证模式”。如果您使用标准的用户名/密码方法,那么您将永远无法连接。
然后继续创建数据库架构,并在主安全选项卡下使用与此数据库相关的用户名/密码创建新用户。确保您设置了所有权限,即:owner、datareader、datawriter。
我使用的PHP连接脚本如下:
*=============================================== =*
function openConnection() {
$dbaseServer = "instance name";
$dbaseIp = "127.0.0.1";
$dbasePort = "1433";
$dbaseName = "databsse name";
$dbaseUser = "username";
$dbasePassword = "password";
$connectionString = ""
."Driver={SQL Server};"
."Network=DBMSSOCN;"
."Server=$dbaseServer;"
."Address=$dbaseIp:$dbasePort;"
."Database=$dbaseName;"
."Uid=$dbaseUser;"
."Pwd=$dbasePassword";
try {
$connection = new COM("ADODB.Connection");
$connection->ConnectionTimeout = 60;
$connection->Open($connectionString);
return $connection;
} catch (exception $e) {
echo "Could not connect - $e";
exit;
}
}
// test query
//===========
$sql = "SELECT * FROM [dbname].[dbo].[tablename]";
$connection = openConnection();
// unnecessary but in my case more time is needed.
$connection->CommandTimeout = 240;
$recordset = $connection->Execute($sql);
if (!$recordset) { $connection->Close(); die("Request failed!"); }
if (!$recordset->EOF) {
while (!$recordset->EOF) {
$test[] = $recordset[0]->value;
$recordset->MoveNext();
}
}
print_r($test);
$connection->Close();
--
我想就是这样。请随时纠正我的帖子和/或改进它:)