我们的站点位于 Rackspace 云站点上,目前在 PHP 5.4.1.0 上使用 Codeigniter 3.0.0 运行良好,并连接到 MSSQL 2012 数据库。Rackspace 正在将 PHP 从 5.4.1.0 升级到 5.6.7-1,并提供了测试链接,用于在新的 PHP 环境中测试我们的网站。在此测试环境中,站点不连接到 MSSQL 数据库。但是 - 没有抛出错误(无论如何我都能找到!)
这是我的数据库配置:
$db['default'] = array(
'dsn' => '',
'hostname' => 'mssqlXXXX.XXX',
'username' => 'USERNAME',
'password' => 'PASSWORD',
'database' => 'DATABASE NAME',
'dbdriver' => 'mssql',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
作为测试,Rackspace 还让我编写了一个测试控制器。它在 Codeigniter 中也失败了。代码如下:
$username = "USERNAME";
$password = "PASSWORD";
$hostname = 'mssqlXXXX.XXX';
$dbname = "DATABASE";
//connection to the database
$dbcon = mssql_connect($hostname, $username, $password)or die("Unable to connect to MSSQL");
echo "Connected to MSSQL";
//select the database
mssql_select_db($dbname, $dbcon);
//SQL Select statement
$sqlselect = "SELECT * FROM INFORMATION_SCHEMA.TABLES";
//Run the SQL query
$sqlquery = mssql_query($sqlselect);
//Output the query results
while ($result = mssql_fetch_array($sqlquery) )
{
echo "<br>";
print_r($result);
echo "<br>";
}
如果我将此脚本从 Codeigniter 环境中取出,它就可以工作。
我尝试将我的 codeigniter 数据库配置更改如下:将主机名更改为 IP 地址而不是 Rackspace 推荐值,将 dbdriver 更改为 sqlsrv,使用 dsn 字符串而不是主机名和数据库,并使用 odbc 数据库驱动程序。没有任何效果。
我对任何和所有建议持开放态度。
编辑 - - - - - - - - - - - - - - - - - - - - - - - - - ----------------------
Rackspace 说“freetds 的问题,这是一个使用我的 PHP 的 mssql 模块连接到 MSSQL 数据库的库;问题似乎围绕着使用超过 30 个字符的密码。”
所以 - 我缩短了我的密码。现在上面提到的测试控制器工作了!欢呼!但是 - 标准的 Codeigniter 数据库连接没有。