За последние 24 часа нас посетили 21759 программистов и 1076 роботов. Сейчас ищут 733 программиста ...

php 7.3

Тема в разделе "Прочие вопросы по PHP", создана пользователем diprom, 18 июн 2019.

Метки:
  1. diprom

    diprom Новичок

    С нами с:
    5 апр 2017
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте, помогите решить проблему. Раньше использовался 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

    Заранее спасибо.
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.750
    Симпатии:
    1.322
    Адрес:
    Лень
    почему ошибка тут присутствует ?
    --- Добавлено ---
    Дальше не рассматривал, не оформили код как надо.
    --- Добавлено ---
    https://www.php.net/manual/ru/function.mssql-connect.php