Здравствуйте, помогите решить проблему. Раньше использовался IIS 8, Windows Server 2012, на котором был развернут сайт через php 5.2.19, перевели в 7.3. Потребовался доп. драйвер mssql. Все установили - все работает. Захотели перейти на debian. Установили там php 7.3, mssql драйвер. Соединение с базой устанавливается, но код не работает. Сравнили php настройки - все однотипно, база данных выводит через крякозяблики. Решили дать тестовые страницы, простой код test,php - кодировка ansi: <?php if (!function_exists('BaseConnect')) { //connection to base function BaseConnect($flag,$database_host,$database_login,$database_password,$db) { //mysql if ($flag == 0) { if (function_exists('mysql_connect')) return mysql_connect($database_host, $database_login, $database_password); } //mssql if ($flag == 1) { if (function_exists('mssql_connect')) return mssql_connect($database_host, $database_login, $database_password); } else //mssql sqlserv if ($flag == 2) { if (function_exists('mssql_connect')) return mssql_connect($database_host, $database_login, $database_password); else if (function_exists('sqlsrv_connect')) { $connectionOptions = array( "database" => $db, "uid" => $database_login, "pwd" => $database_password, "CharacterSet" => SQLSRV_ENC_CHAR ); return sqlsrv_connect($database_host, $connectionOptions); } } else //freetds if ($flag == 3) { if (function_exists('mssql_connect')) return mssql_connect($database_host, $database_login, $database_password); } else return null; } } if (!function_exists('SelectDB')) { //select base function SelectDB($link, $db,$flag) { //mysql if ($flag == 0) { if (function_exists('mysql_select_db')) return mysql_select_db($db,$link) ; } //mssql if ($flag == 1) { if (function_exists('mssql_select_db')) return mssql_select_db($db,$link); } //sqlserv mssql if ($flag == 2) { if (function_exists('mssql_select_db')) return mssql_select_db($db,$link); else { $sql = "USE ".$db; Query($flag,$sql,$link); return true; } } //freetds if ($flag == 3) { if (function_exists('mssql_select_db')) return mssql_select_db($db,$link); } else return null; } } if (!function_exists('Query')) { //query function Query($flag,$sql,$link) { if (!$sql || !$link || strlen($sql)<5) return null; //mysql if ($flag == 0) { if (function_exists('mysql_query')) return mysql_query($sql,$link); } //mssql if ($flag == 1) { if (function_exists('mssql_query')) return mssql_query($sql,$link); } //sqlserv mssql if ($flag == 2) { if (function_exists('mssql_query')) return mssql_query($sql,$link); else if (function_exists('sqlsrv_query')) return sqlsrv_query($link,$sql,array(), array("Scrollable"=>"buffered")); } //freetds if ($flag == 3) { if (function_exists('mssql_query')) return mssql_query($sql,$link); } else return null; } } if (!function_exists('Fetch')) { function Fetch($flag,$query) { if (!$query) return null; if (!is_resource($query)) return null; //mysql if ($flag == 0) { if (function_exists('mysql_fetch_array')) return mysql_fetch_array($query,MYSQL_BOTH); } //mssql if ($flag == 1) { if (function_exists('mssql_fetch_array')) return mssql_fetch_array($query,MSSQL_ASSOC); } //sqlserv mssql if ($flag == 2) { if (function_exists('mssql_fetch_array')) return mssql_fetch_array($query,MSSQL_ASSOC); else if (function_exists('sqlsrv_fetch_array')) return sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC); } //freetds if ($flag == 3) { if (function_exists('mssql_fetch_array')) return mssql_fetch_array($query,MSSQL_ASSOC); } else return null; } } if (!function_exists('NumRows')) { //rowcount function NumRows($flag,$result) { //mysql if ($flag == 0) { if (function_exists('mysql_num_rows')) return mysql_num_rows($result); } //mssql if ($flag == 1) { if (function_exists('mssql_num_rows')) return mssql_num_rows($result); } //sqlserv mssql if ($flag == 2) { if (function_exists('mssql_num_rows')) return mssql_num_rows($result); else { if (function_exists('sqlsrv_num_rows')) return sqlsrv_num_rows($result); } } //freetds if ($flag == 3) { if (function_exists('mssql_num_rows')) return mssql_num_rows($result); } else return null; } } // Connect to server and select database. $link = BaseConnect($db_type,$host,$username,$password,$db_name) ; if (!$link) return ""; if (!SelectDB($link,$db_name,$db_type)) exit(0); $sqlob = sprintf("Select Code,Color,Name from Test order by Name); $queryob = Query($db_type,$sqlob, $link); if ($queryob) { // узнаем сколько записей if (NumRows($db_type,$queryob)) { $tj=0; while ($rowob = Fetch($db_type,$queryob)) { $tj++; $tername = iconv('Windows-1251','UTF-8', $rowob['Name']); $tername = trim($tername,"\t'\""); $color = iconv('Windows-1251','UTF-8', $rowob['Color']); $color = trim($color,"\t'\""); $id = $rowob['Code']; echo $rowob['Name']."<br>"; echo $tername."<br>"; } } } ?> Ответ страницы в браузере Mozilla (debian): В резерве Р’ резерве Выбыл Выбыл На выезде РќР° выезде Неисправен Неисправен Ответ страницы в браузере Mozilla (Windows): � ������� В резерве ����� Выбыл �� ������ На выезде ���������� Неисправен Не могу пока понять, что нужно сделать, чтобы код работал универсально с 2 сторон, чтобы в debian не пришлось переписывать код, так как на платформе Windows он работает хорошо. Заголовки и ответы windows в браузере: Host: 192.168.1.21:1111 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive Upgrade-Insecure-Requests: 1 Cache-Control: max-age=0 HTTP/1.1 200 OK Content-Type: text/html; charset=utf-8 Content-Encoding: gzip Vary: Accept-Encoding Server: Microsoft-IIS/8.0 X-Powered-By: PHP/7.3.6 X-Powered-By: ASP.NET Access-Control-Allow-Origin: * Date: Tue, 18 Jun 2019 07:20:25 GMT Content-Length: 272 В дебиане: Host: 192.168.1.22:1111 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive Upgrade-Insecure-Requests: 1 Cache-Control: max-age=0 HTTP/1.1 200 OK Date: Tue, 18 Jun 2019 08:20:55 GMT Server: Apache/2.4.25 (Debian) Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 183 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html; charset=utf-8 Заранее спасибо.
почему ошибка тут присутствует ? --- Добавлено --- Дальше не рассматривал, не оформили код как надо. --- Добавлено --- https://www.php.net/manual/ru/function.mssql-connect.php