Наш сайт находится на облачных сайтах Rackspace и в настоящее время работает нормально с Codeigniter 3.0.0 на PHP 5.4.1.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 нет.
Проблема была с Rackspace, и они исправили это.
Других решений пока нет …